从 redux-saga 中调用 redux-form dispatch(change)
Calling redux-form dispatch(change) from within a redux-saga
我有一个发布到网络服务的 saga 和 returns 要说明的新销售订单号。这很好用,看起来像这样。
//New SALES NUMBER SAGA
function getNewSalesNumber(salesRepId, typeId) {
const url = `${baseUrl}/api/SalesOrder/${salesRepId}?typeId=${typeId}`;
console.log(url);
return axios.post(url);
}
function* callGetNewSalesNumber({salesRepId, typeId, resolve, reject}) {
const result = yield call(getNewSalesNumber, salesRepId, typeId)
if (result.data) {
yield put({type: "NEWSALESNUMBER_FETCHED", result});
// yield call(resolve);
} else {
// yield call(reject);
}
}
function* getNewSalesNumberSaga() {
yield* takeEvery("FETCH_NEWSALESNUMBER", callGetNewSalesNumber);
}
reducer 长这样
function newSalesNumber(state = {}, action) {
switch(action.type) {
case 'NEWSALESNUMBER_FETCHED':
return state
.set("orderHeader.orderId", action.result);
default:
return state;
}
}
export default newSalesNumber;
我正在尝试找出将 newSalesNumber(现在处于状态)的值返回到字段的选项。
如果我在表单组件中执行此操作,我会使用类似这样的东西...
this.props.dispatch(change('mainForm', 'orderNumber', "testNumber"));
有没有办法在收到数据后从 saga 中执行此操作> 我可以从连接的表单外部(在 Saga 中)调用 dispatch(change) 吗?
你可以像这样直接从 sagas 中完成(我们在我们的项目中使用它)
yield put(change('form_name', 'property_name', value_for_the_property))
或者您可以 return 通过 reducer 获取数据并在容器级别使用它来更新您的 redux 表单。
我有一个发布到网络服务的 saga 和 returns 要说明的新销售订单号。这很好用,看起来像这样。
//New SALES NUMBER SAGA
function getNewSalesNumber(salesRepId, typeId) {
const url = `${baseUrl}/api/SalesOrder/${salesRepId}?typeId=${typeId}`;
console.log(url);
return axios.post(url);
}
function* callGetNewSalesNumber({salesRepId, typeId, resolve, reject}) {
const result = yield call(getNewSalesNumber, salesRepId, typeId)
if (result.data) {
yield put({type: "NEWSALESNUMBER_FETCHED", result});
// yield call(resolve);
} else {
// yield call(reject);
}
}
function* getNewSalesNumberSaga() {
yield* takeEvery("FETCH_NEWSALESNUMBER", callGetNewSalesNumber);
}
reducer 长这样
function newSalesNumber(state = {}, action) {
switch(action.type) {
case 'NEWSALESNUMBER_FETCHED':
return state
.set("orderHeader.orderId", action.result);
default:
return state;
}
}
export default newSalesNumber;
我正在尝试找出将 newSalesNumber(现在处于状态)的值返回到字段的选项。
如果我在表单组件中执行此操作,我会使用类似这样的东西...
this.props.dispatch(change('mainForm', 'orderNumber', "testNumber"));
有没有办法在收到数据后从 saga 中执行此操作> 我可以从连接的表单外部(在 Saga 中)调用 dispatch(change) 吗?
你可以像这样直接从 sagas 中完成(我们在我们的项目中使用它)
yield put(change('form_name', 'property_name', value_for_the_property))
或者您可以 return 通过 reducer 获取数据并在容器级别使用它来更新您的 redux 表单。