useEffect()函数仅运行一次,以后会更新存储(React挂钩)

时间:2020-03-28 08:23:34

标签: reactjs react-redux react-hooks

我有一个应用程序,用于像这样提取商店:

const user_data = useSelector(state => state.user_data);

此后我有一个useEffect()函数,它将某些状态对象分配给从商店接收的数据。

useEffect(() => {
  setName(user_data.name);
}, []);

商店正在通过类似的方式设置:

await dispatch(save_user_info(res.data.response));
props.history.push("/setting/dashboard");

现在的问题是,user_data首次运行时useEffect为空。 之后会填充它,但是useEffect仅运行一次。

在更新商店之前,页面已重定向到新组件,因此,当页面首次加载时,它没有商店数据。

如果返回了商店中的数据,如何使useEffect重新运行?

1 个答案:

答案 0 :(得分:1)

如果将useEffect的第二个参数保留为空,则它将在每次组件更新时运行。

private void clear() {
    for (int i = 0; i<9; i++){
        for (int j = 0; j<9; j++){
            if(iseditable(i,j)){
                bord[i][j].setText("");
            }
        }
    }
}

private boolean iseditable(int i, int j) {
    for (String s : generatedXY) {
        char[] m = s.toCharArray();
        char x = (char) (i + '0');
        char y = (char) (j + '0');
        return m[1] != x || m[3] != y;
    }
    return false;
}

如果您更改此数组[](为空)中提到的变量,它将运行。

或者您可以这样做

useEffect(() => {
  setName(user_data.name);
});