小编pep*_*969的帖子

useReducer 状态更新不会在另一个组件中重新渲染 useEffect 及其依赖项

我有一个父组件,它根据 useReducer 中名为 state.viewOption 的状态选择要渲染的视图。

调度它的子组件类似于:

export default function SearchFilter({ placeholder, onSearch }) {

    const [state, dispatch] = useReducer(
        collectionListReducer,
        initialCollectionState
    );

const option = state.viewOption;
  
    const handleChange = e => dispatch(setSketchesTrendsOption(e.target.value));

    return (
 <Grid container>
            <Grid item className={classes.selector}>
                <TextField
                    select
                    id="sketches-trends-selector"
                    value={option}
                    onChange={handleChange}
                >
                    <MenuItem value="Sketches">{t('TR_SKETCHES')}</MenuItem>
                    <MenuItem value="Trends">{t('TR_TRENDS')}</MenuItem>
                </TextField>
            </Grid>
   );
}
Run Code Online (Sandbox Code Playgroud)

然后我想根据这个状态选择视图选项的父组件是这样的:

export default function CollectionListOption() {
    const [state, dispatch] = useReducer(
        collectionListReducer,
        initialCollectionState
    );

const viewOption = state.viewOption;

 useEffect(() => {

        console.log('view option in useEffect', viewOption);

    }, …
Run Code Online (Sandbox Code Playgroud)

reactjs use-reducer

2
推荐指数
1
解决办法
3832
查看次数

标签 统计

reactjs ×1

use-reducer ×1