我很难弄清楚为什么在以后的阶段中我的redux状态变得不确定。
所以我有一个看起来像这样的动作
export const coinUpdateState = (booleanValue) => {
console.log(typeof booleanValue) //This logs Boolean
return function (dispatch) {
dispatch({
type: COIN_UPDATE_STATE,
payload: booleanValue
})
}
}
和一个看起来像这样的减速器
const initialState = {
DataFetching: true,
DataSucess: [],
DateError: [],
DateError: false,
DataSort: true,
DataUpdate: true
}
export default function(state = initialState, action) {
switch (action.type) {
case EXCHANGE_CURRENCY_FETCHING:
return {
DataFetching: true,
DataSort: true
}
case EXCHANGE_CURRENCY_FETCH_SUCCESS:
return {
...state,
DataSucess: action.payload,
DataFetching: false,
DataSort: false
}
case EXCHANGE_CURRENCY_FETCH_ERROR:
return {
...state,
DateError: action.payload,
DataFetching: true,
DateError: true,
DataSort: true
}
case COIN_UPDATE_STATE:
console.log(action.payload) //This logs the boolean value I am sending
return {
DataUpdate: action.payload
}
default:
return state
}
}
后来我在我的应用中像这样使用它
render () {
console.log(this.props.cryptoUpdateState)
if (this.props.cryptoUpdateState) {
console.log("Inside if render")
displayData = async () => {
this.coinURL = await AsyncStorage.getItem("CryptoCurrencySelected").catch((error) => {
console.log(error)
})
if (this.coinURL != "undefined" && this.coinURL != null) {
console.log("Inside Async", this.coinURL)
this.props.exchangeToDisplay(this.coinURL)
}
if (this.coinURL == null || this.coinURL == "undefined") {
console.log("Null", this.coinURL)
this.coinURL = "BTC"
}
}
displayData()
this.props.coinUpdateState(false)
}
在上面的代码段中,请注意初始的console.log
,它会第一次正确记录true
,然后在我实际传递false时记录undefined in console
( {{1 }} )。
还要注意我的代码中的日志,除了正在记录未定义的后期阶段(在console.log中),它们还在记录我正确发送的值。
问题:我在这里可能做错了什么?
答案 0 :(得分:0)
Reducer将返回您应用程序状态的新版本。如果您不想丢失以前的状态,则需要确保始终返回所需的任何添加/修改。
从触发切换的情况返回的任何结果都将是下一个状态版本,对于COIN_UPDATE_STATE
,状态将仅包含DataUpdate
。
对于所有的redux reducer操作,请确保您正在做...state
,以确保您保持状态。
例如
case COIN_UPDATE_STATE:
return {
...state,
DataUpdate: action.payload
}