Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs useState()钩子不';t导致组件重新招标,这样子组件也不会更新_Reactjs_React Native - Fatal编程技术网

Reactjs useState()钩子不';t导致组件重新招标,这样子组件也不会更新

Reactjs useState()钩子不';t导致组件重新招标,这样子组件也不会更新,reactjs,react-native,Reactjs,React Native,我创建了一个视图,其中用户从设备上的本地数据库加载。单击任务组件时,它应该更新并在组件中显示复选标记(这是选中的Prop负责的)。但不知何故,在第一次更新所选的状态数组后,将所有值从false=notselected更新为true,页面不会发生重新排序 任何人都看到我在代码中犯的错误。因为我试了很多,但似乎找不到。不知何故,我仍然确信我做了一个,因为根据文档,setSelected函数应该在值改变时触发重新排序,而数组就是这样做的 Users.tsx(应用程序的一个页面) const用户:Rea

我创建了一个视图,其中用户从设备上的本地数据库加载。单击任务组件时,它应该更新并在组件中显示复选标记(这是
选中的
Prop负责的)。但不知何故,在第一次更新所选的
状态数组后,将所有值从false=notselected更新为true,页面不会发生重新排序

任何人都看到我在代码中犯的错误。因为我试了很多,但似乎找不到。不知何故,我仍然确信我做了一个,因为根据文档,setSelected函数应该在值改变时触发重新排序,而数组就是这样做的

Users.tsx(应用程序的一个页面)

const用户:React.FC=()=>{
...
返回(
{contacts.length>0(
contacts.map((c,索引)=>{
返回[
{
setSelected((预设)=>{
预告[
指数
]=已选定;
返回[…预存];
});
}}
键={index}
名字={
c、 名字+
" " +
c、 姓氏
}
/>,
,
];
})
) : (
尚未创建任何客户
)}
{
const[checked,setChecked]=使用状态(false);
useffect(()=>{
setChecked(checkedProp);
},[checkedProp]);
返回(
{
onSelect(!选中);
}}
>
{检查过了吗(
):未定义}
{name}
);
};

除了未发生的重新招标,我没有得到任何异常或其他情况。

答案是react导航根本不会导致对重新访问的路线进行更新。但它为您提供了
useIsFocused()
挂钩,以便与
useEffect()
相结合,如下所示:

const focused = useIsFocused();
//Gets called on each Visit of the Route/View
useEffect(()=>{...}, [focused]);

答案是react导航根本不会导致对重新访问的路线进行更新。但它提供了
useIsFocused()
挂钩,可与
useEffect()
组合,如下所示:

const focused = useIsFocused();
//Gets called on each Visit of the Route/View
useEffect(()=>{...}, [focused]);
const focused = useIsFocused();
//Gets called on each Visit of the Route/View
useEffect(()=>{...}, [focused]);