在 React 的 epic 函数中添加 if 语句的条件判断。
示例代码:
import { ofType } from 'redux-observable';
import { ajax } from 'rxjs/ajax';
import { map, switchMap } from 'rxjs/operators';
import { FETCH_USER, setUser } from '../actions/userActions';
export const fetchUserEpic = (action$) =>
action$.pipe(
ofType(FETCH_USER),
switchMap(({ payload }) =>
ajax.getJSON(`https://api.example.com/users/${payload}`).pipe(
map((response) => {
if (response && response.id) { // 添加条件判断
return setUser(response);
}
return { type: 'FETCH_USER_FAILED' };
})
)
)
);
在示例代码中,我们在 map
方法中添加了 if 语句的条件判断。根据条件判断的结果,返回 setUser
action 或者包含错误信息的 action。这样就能根据接口返回的数据,动态地控制 action 的输出,而不是始终输出同一种 action。