Redux 批处理在 React Native 应用程序上无法正常工作
Redux batch doesn't work properly on React Native app
需要调用多个调度。尝试使用 react-redux 中的批处理,但它仅触发函数内的第一次调度。尝试交换调度,相同,仅触发第一个,已在开发工具中检查。 Thunk 已连接
在应用程序中:
dispatch(
setData({
user,
userLang,
userToken,
dateMargin,
}), )
操作:
export const setData = ({user, userLang, userToken, dateMargin}) => {
return dispatch => {
batch(() => {
dispatch(setToken(userToken))
dispatch(setLang(userLang))
dispatch(setUser(user))
dispatch(setDateMargin(dateMargin))
})
}
}
是的,batch
是 react-dom
的再出口。 React-native 没有类似的API,所以那是不可能的。
一般来说,建议Model Actions as Events, Not Setters, Allow Many Reducers to Respond to the Same Action and to Avoid Dispatching Many Actions Sequentially(更多解释见链接),所以你在这里做的几乎是一个反模式:
你的组件中有逻辑,尽管 Redux 的强大之处在于它将状态逻辑从你的组件中移出到你的商店中。
按照官方 Redux 风格指南的建议,您更愿意
dispatch(userLoggedIn({
userToken,
userLang,
user,
dateMargin
})
并且可能有多个 reducer 作用于该事件类型的操作。
需要调用多个调度。尝试使用 react-redux 中的批处理,但它仅触发函数内的第一次调度。尝试交换调度,相同,仅触发第一个,已在开发工具中检查。 Thunk 已连接
在应用程序中:
dispatch(
setData({
user,
userLang,
userToken,
dateMargin,
}), )
操作:
export const setData = ({user, userLang, userToken, dateMargin}) => {
return dispatch => {
batch(() => {
dispatch(setToken(userToken))
dispatch(setLang(userLang))
dispatch(setUser(user))
dispatch(setDateMargin(dateMargin))
})
}
}
是的,batch
是 react-dom
的再出口。 React-native 没有类似的API,所以那是不可能的。
一般来说,建议Model Actions as Events, Not Setters, Allow Many Reducers to Respond to the Same Action and to Avoid Dispatching Many Actions Sequentially(更多解释见链接),所以你在这里做的几乎是一个反模式:
你的组件中有逻辑,尽管 Redux 的强大之处在于它将状态逻辑从你的组件中移出到你的商店中。
按照官方 Redux 风格指南的建议,您更愿意
dispatch(userLoggedIn({
userToken,
userLang,
user,
dateMargin
})
并且可能有多个 reducer 作用于该事件类型的操作。