从redux-saga中调用redux-form调度(更改)

时间:2018-03-16 03:06:28

标签: reactjs redux redux-form redux-saga

我有一个传票发布到网络服务并返回一个新的销售订单号给州。这很有效,看起来像这样。

//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);
}

减速机看起来像这样。

    function newSalesNumber(state = {}, action) {
  switch(action.type) {
    case 'NEWSALESNUMBER_FETCHED':
      return state
        .set("orderHeader.orderId", action.result);
    default:
      return state;
  }
}

export default newSalesNumber;

我正在试图找出将该值返回到newSalesNumber(现在处于状态)到Field的选项。

如果我是从表单组件中执行此操作,我会使用类似的东西......

 this.props.dispatch(change('mainForm', 'orderNumber', "testNumber"));

接收到数据后,是否有办法在传奇中执行此操作>我可以从连接表格的外部(在佐贺县)调用发送(更改)吗?

1 个答案:

答案 0 :(得分:3)

你可以直接从sagas这样做(我们在我们的项目中使用它)

yield put(change('form_name', 'property_name', value_for_the_property))

或者您可以通过reducer返回数据,并在容器级别使用它来更新您的redux表单。