我有一个应用程序,用于像这样提取商店:
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
重新运行?
答案 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);
});