const HeaderContainer = () => { const dispatch = useDispatch(); const { user } = useSelector(({ user }) => ({ user: user.user, })); const onLogout = () => { dispatch(logout()); }; return <Header user={user} onLogout={onLogout} />; }
function useReduxViewModelSelector(query: ViewModelQuery | string): any { if (typeof query === 'string') { return useSelector((state: ReduxState) => getEntry(state.readModels, query)) } return useSelector((state: ReduxState) => getEntry(state.viewModels, { query, }) ) }
const NavigationContainer = props => { const navRef = useRef(); const isAuth = useSelector(state => !!state.auth.token); useEffect(() => { if(!isAuth){ navRef.current.dispatch(NavigationActions.navigate({routeName: 'Auth'})); } }, [isAuth]) return <ShopNavigator ref={navRef} /> }
export function useCharClassList() { const dispatch = useDispatch(); const load = () => dispatch(readCharClassList()); useEffect(() => { load(); }, []); return useSelector(selectCharClassList); }
function useTodo(id) { return useSelector(state => { if (state.todos.hasOwnProperty(id)) return state.todos[id]; return null; }, shallowEqual); }
function ShoppingCartIcon() { const navigation = useNavigation() const cartItems = useSelector(state => state) return ( <TouchableOpacity onPress={() => navigation.navigate('Cart')} style={styles.button}> <View style={styles.itemCountContainer}> <Text style={styles.itemCountText}>{cartItems.length}</Text> </View> <Ionicons name='ios-cart' size={32} color='#101010' /> </TouchableOpacity> ) }
const PrivateRoute = ({ children, ...rest }) => { const location = useLocation(); const isAuth = useSelector(isAuthenticated); return ( <Route {...rest}> { isAuth ? children : ( <Redirect to={{ pathname: '/auth/login', state: { from: location } }} /> )} </Route> ); }
useSelector(state => getChartData(state, id, selectedPeriod, selectedMetric, getMeasure(selectedMetric), isReducedChart) )
const TagBoxContainer = () => { const dispatch = useDispatch(); const { tags } = useSelector(({ write }) => ({ tags: write.tags, })); const onChangeTags = nextTags => { dispatch( changeField({ key: 'tags', value: nextTags, }), ); }; return <TagBox onChangeTags={onChangeTags} tags={tags} />; }
export default function useSelectorMap(selector, isEqual) { return useSelector(selector, isEqual || shallowEqual); }
export function useCharClass(id) { const dispatch = useDispatch(); const load = () => dispatch(readCharClass(id)); useEffect(() => { load(); }, []); return useSelector(selectCharClass(id)); }
function useReduxReadModelSelector(query: ReadModelQuery | string): any { if (typeof query === 'string') { return useSelector((state: ReduxState) => getEntry(state.readModels, query)) } return useSelector((state: ReduxState) => getEntry(state.readModels, { query, }) ) }
useSelector(state => getChartData(state, id, selectedPeriod, selectedMetric, 'rank', isReducedChart) )
const NavigationContainer = props => { const navRef = useRef(); const isAuth = useSelector(state => !!state.auth.token); useEffect(() => { if (!isAuth) { navRef.current.dispatch( NavigationActions.navigate({ routeName: 'Auth' }) ); } }, [isAuth]); return <ShopNavigator ref={navRef} />; }
const GuestRoute = ({ children, ...rest }) => { const location = useLocation(); const isAuth = useSelector(isAuthenticated); return ( <Route {...rest}> { isAuth ? ( <Redirect to={{ pathname: '/', state: { from: location } }} /> ) : children } </Route> ); }