Effect 被称为副作用,在我们的应用中,最常见的就是异步操作 是 不是
时间: 2024-03-01 17:55:03 浏览: 23
是的,Effect 被称为副作用,最常见的就是异步操作。在Dva中,Effect 主要用于处理异步操作,例如发送网络请求、获取服务器数据等。Effect 可以被看做是一个纯函数,它接收一个参数,也就是 action,然后根据这个 action 进行一些异步操作,最终返回一个结果。这个结果可以是一个新的 action,也可以是一个普通的 JavaScript 对象。例如:
```javascript
import { delay } from 'redux-saga';
import { call, put, takeEvery } from 'redux-saga/effects';
import { fetchPostsSuccess } from './actions';
function* fetchPosts(action) {
try {
const response = yield call(fetch, '/api/posts');
const data = yield response.json();
yield put(fetchPostsSuccess(data));
} catch (error) {
console.log(error);
}
}
function* mySaga() {
yield takeEvery('FETCH_POSTS', fetchPosts);
}
```
在这个例子中,`fetchPosts`函数是一个 Effect,它接收一个 action,然后使用`call`函数发起网络请求,并使用`put`函数向 Redux 发出一个新的 action。这个新的 action 是`fetchPostsSuccess`函数返回的一个普通 JavaScript 对象,其中包含了从服务器获取到的数据。最后,`mySaga`函数使用`takeEvery`函数来监听`FETCH_POSTS` action,当这个 action 被发出时,会自动调用`fetchPosts`函数。这样,就可以在应用中进行异步操作了。