在redux中,当一个动作被调度时,reducer会相应地改变状态,调用该动作的组件也可以访问该状态(通过提供者的props传递)。我说得对吗?
状态是访问组件中操作结果的唯一方式吗?(调用操作的组件)。
将回调函数传递给操作,然后使用它将结果发送回组件,怎么样?
在redux中,当一个动作被调度时,reducer会相应地改变状态,调用该动作的组件也可以访问该状态(通过提供者的props传递)。我说得对吗?
当在redux模式中触发一个操作时,所有减速器都会运行,但只有将对该类型操作进行操作的减速器才会在商店中执行减速工作。有时,您可以有一个不返回操作类型的操作。如果我想让reducer减少应用程序存储中的状态,我通常会返回一个操作对象,否则我不需要。记住,当一个状态被减少时,所有呈现其值的组件都会被重新呈现。
状态是访问组件中操作结果的唯一方式吗?(调用操作的组件)。
我认为你可以设计一个操作,在执行后返回结果,但你不会完全使用redux模式。
将回调函数传递给操作,并使用该函数将结果发送回组件如何?
我以前从未尝试过,但我认为promise是一个不错的选择。我总是使用axios
从服务器获取结果,如果我有结果,那么会调度另一个axios让reducer更新状态,否则会调度一个用于错误处理的reducer。
//actions
const axios from 'axios'
const FETCH_ITEMS = 'FETCH_ITEMS'
const FETCH_ITEMS_RECEIVED = 'FETCH_ITEMS_RECEIVED'
const FETCH_ERROR = 'FETCH_ERROR'
const SERVER_BASE_URL = 'localhost:4000/'
export function itemsReceive(items){
return {
type: FETCH_ITEMS_RECEIVED,
items
}
}
export function itemsFetchError(){
return {
type: FETCH_ERROR,
errorMsg: 'There was an issue fetching items.'
}
}
//This function shall dispatch the two actions above in case we have the expected result or an error.
export function fetchItems(){
return dispatch => {
axios.get(SERVER_BASE_URL + 'items').
then(function(res){
const { data } = res
if(data.status === 0){ //data.status is just a status sent by my server to show the response is good.
const items = data.response
dispatch(itemsReceive(items))
}else{
dispatch(itemsFetchError())
}
}).catch(function(err)){//this error here is usually caused by network disruption
dispatch(itemsFetchError())
}
}
}
在redux中,当一个动作被调度时,reducer将改变状态因此,调用该操作的组件也具有访问状态(由提供者通过道具传递)。我说得对吗?
是的,你说得对。当动作被调度时,你需要指定动作创建者,在动作创建者内部,你可以触发同步或异步动作(使用thunk或saga),每个动作创建都有actionType和payload(可选)。在调用动作创建者内部的动作时,所有减速器都会得到通知,并与动作传递的类型相匹配。
状态是访问组成部分(调用操作的组件)。
作为redux的最佳实践,状态应该由reducer(作为一个纯函数)更改,如果您监听该状态,它将作为道具传递给组件。
将回调函数传递给操作,并使用它是否将结果发送回组件?
您可以将回调函数传递给动作创建者,动作创建者只是一个函数。