yield put是什么
时间: 2023-09-02 22:07:54 浏览: 46
`yield put` 是Redux-saga中的一个effect,用触发一个action。Redux-saga是一个用于管理异步操作的Redux中间件,它允许你使用generator函数来处理副作用(例如异步请求、定时器等)。在generator函数中,你可以使用`yield put(action)`来发起一个action,这个action会被Redux的reducer捕获并处理,从而更新应用的状态。
`put` 接受一个action对象作为参数,并将它发送给Redux的store。这样,你可以在saga中以同步的方式触发action,而不是直接在组件中使用dispatch方法。这种方式可以更好地管理复杂的异步逻辑,并且使代码更易于测试和维护。
相关问题
yield put({ type: 'saveReducer', payload: { departmentList: data, }, });这是什么意思
这段代码是在使用Redux中间件redux-saga中generator函数中使用的。它使用了`yield put()`方法,用于触发一个action。在这个例子中,它触发了一个类型为'saveReducer'的action,并将`data`作为payload传递给这个action。这个action会被Redux的reducer捕获并处理,从而更新store中的`departmentList`数据。
Dva model中put不仅可以调用reduers 对象中的方法,也可以调用effects里面的函数 是 不是
是的,在Dva的Model中,`put`函数不仅可以调用`reducers`对象中的方法,还可以调用`effects`中的函数。`put`函数用于向 Redux 发出一个新的 action,这个新的 action 可以被`reducers`对象中的方法或者`effects`中的函数所处理。例如:
```javascript
import { delay } from 'redux-saga';
import { call, put } from 'redux-saga/effects';
export default {
namespace: 'myModel',
state: {
data: [],
},
reducers: {
saveData(state, { payload }) {
return { ...state, data: payload };
},
},
effects: {
*fetchData(action, { call, put }) {
try {
const response = yield call(fetch, '/api/data');
const data = yield response.json();
yield put({ type: 'saveData', payload: data });
} catch (error) {
console.log(error);
}
},
},
};
```
在这个例子中,`fetchData`是一个 Effect,它使用`call`函数发起网络请求,并使用`put`函数向 Redux 发出一个新的 action,这个新的 action 是`saveData`函数返回的一个普通 JavaScript 对象,其中包含从服务器获取到的数据。`saveData`函数是`reducers`对象中的方法,用于更新`state`中的`data`属性。这样,在应用中调用`fetchData`函数时,就可以通过向 Redux 发出一个新的 action 来更新`state`中的数据了。