我的問題是我的 redux 狀態正在更新(我可以在 redux 開發工具中看到它)但我的組件沒有更新,它沒有放置我的陣列的最后一個值initialState.userWeight
這是我的減速器的樣子:
case 'NEWWEIGHT':
const weight = action.payload.weight
const date = action.payload.date
state.userWeight = [...state.userWeight, {weight: weight, date: date}]
return {...state}
這是我的初始狀態:
const initialState = {
userName: '',
userSize: 0,
userWeight: [],
userDate: '',
}
這是我的組件的樣子:
const userWeightRedux = useSelector(state => state.userInfo.userWeight[Array.length - 1].weight)
console.log(userWeightRedux)
...
<Text style={styles.user}>{userWeightRedux}</Text>
所以不console.log(userWeightRedux)改變。我是反應的新手,redux 并且不完全理解傳播語法,也許問題在這里但沒有找到任何東西,希望你能幫助我:)。
uj5u.com熱心網友回復:
Array.length是陣列的原型屬性。你不能那樣使用它。默認情況下總是 1。所以你總是檢索 的第一個元素state.userInfo.userWeight。改用:
const userWeightRedux = useSelector(state => state.userInfo.userWeight[state.userInfo.userWeight.length - 1].weight)
或更溫和的語法:
const userWeightRedux = useSelector(state => state.userInfo.userWeight.slice(-1)[0].weight)
uj5u.com熱心網友回復:
盡管其他答案可以更好地解決您的具體問題......
你正在改變你的狀態。盡管您正在回傳一個新的狀態物件,但您將舊狀態弄得一團糟。這會導致一些微妙的問題。不要在減速器中改變任何東西。所以...
// this line mutates the "outgoing" state
state.userWeight = [...state.userWeight, {weight: weight, date: date}]
return {...state}
應該改寫為:
return {...state, userWeight: [...state.userWeight, {weight: weight, date: date}]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/404427.html
標籤:
