React Native 中的深拷贝数据更新问题
Deep copy data update problem in react native
我正在使用这个
const HomeProfile = ({data}) =>{
var tempData = {}
const onOptionClick = ( clicked_index) => {
tempData = { ...data[0].atpData }
tempData.selected_index = clicked_index
}
const addInProps = () =>{
data[0].atpData=tempData
}
const checkData = () =>{
console.log('tempData',tempData)
}
return(
<View>
<Text></Text>
</View>
)
}
在 checkData 函数中检查数据时,它给我的是空数据。但是如果我使用这个钩子
const [tempData,settempData] = usestate({})
我的问题:
它工作得很好,因为我将它与 var tempData = {} 一起使用,但在添加数据后出现问题。在 checkData() 函数中仍然得到空数据
如果我使用 const [tempData,settempData] = usestate({}) 则它会更改 data[0].atpData 中的数据而不会触发该函数,所以我不知道如何解决它。但我正在根据需要获取数据 checkData() 函数。
你应该使用 useState 钩子,所以你需要将它初始化为空对象,然后根据需要在你的方法中调用 setter:
const HomeProfile = ({data}) =>{
const [tempData, setTempData] = useState({})
const onOptionClick = ( clicked_index) => {
setTempData({...data[0].atpData, selected_index: clicked_index})
}
const addInProps = () =>{
data[0].atpData=tempData
}
const checkData = () =>{
console.log('tempData',tempData)
}
return(
<View>
<Text></Text>
</View>
)
}
检测对象变化时可以使用useEffect hook
我正在使用这个
const HomeProfile = ({data}) =>{
var tempData = {}
const onOptionClick = ( clicked_index) => {
tempData = { ...data[0].atpData }
tempData.selected_index = clicked_index
}
const addInProps = () =>{
data[0].atpData=tempData
}
const checkData = () =>{
console.log('tempData',tempData)
}
return(
<View>
<Text></Text>
</View>
)
}
在 checkData 函数中检查数据时,它给我的是空数据。但是如果我使用这个钩子
const [tempData,settempData] = usestate({})
我的问题: 它工作得很好,因为我将它与 var tempData = {} 一起使用,但在添加数据后出现问题。在 checkData() 函数中仍然得到空数据
如果我使用 const [tempData,settempData] = usestate({}) 则它会更改 data[0].atpData 中的数据而不会触发该函数,所以我不知道如何解决它。但我正在根据需要获取数据 checkData() 函数。
你应该使用 useState 钩子,所以你需要将它初始化为空对象,然后根据需要在你的方法中调用 setter:
const HomeProfile = ({data}) =>{
const [tempData, setTempData] = useState({})
const onOptionClick = ( clicked_index) => {
setTempData({...data[0].atpData, selected_index: clicked_index})
}
const addInProps = () =>{
data[0].atpData=tempData
}
const checkData = () =>{
console.log('tempData',tempData)
}
return(
<View>
<Text></Text>
</View>
)
}
检测对象变化时可以使用useEffect hook