【发布时间】:2021-04-16 03:42:45
【问题描述】:
我正在尝试通过一个函数将项目添加到保存为本地状态(使用 useState)的数组中,该函数作为导航参数发送到另一个屏幕。
假设我有 ScreenA,它看起来:
ScreenA = () => {
const[obj,setObj] = useState({arr:[]})
addItem(item:any)=>{
setObj([...obj,arr:arr.concat(item)])
}
const objContext = {
obj,
addItem
}
return(
<objContext.Provider = value = {objContext}>
<ScreenB/>
<objContext/>
)
///
...
///
}
screenB = () => {
const {addItem} = useContext(Context)
return(
<View>
<Button onPress{()=>navigation.navigate("ScreenC",{addItemFunc:addItem})}
</Button>
</View>
)}
ScreenC = () => {
return(
<View>
<Button onPress={()=>route.params.addItemFunc(1)}/>
</View>
)}
export const Context = Tract.createContext({
obj: {},
addItem: (item: any) => null})
然而,在调试时,项目并没有被添加到数组中,只有在返回 ScreenA 之前添加的最后一个元素才真正添加到数组中。
【问题讨论】:
标签: react-native navigation react-hooks react-context react-navigation-v5