Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs Redux Saga-将结果返回给被调用函数,而不是分派新操作_Reactjs_Redux_Yield_Redux Saga - Fatal编程技术网

Reactjs Redux Saga-将结果返回给被调用函数,而不是分派新操作

Reactjs Redux Saga-将结果返回给被调用函数,而不是分派新操作,reactjs,redux,yield,redux-saga,Reactjs,Redux,Yield,Redux Saga,我将我的react项目转移到redux&redux传奇。最初,我调用一个异步方法来获取大型数据集,然后在本地状态下进行设置,如下所示: // Component.jsx componentDidMount() { const dataPromise = this.getTableData() const data = await dataPromise this.setState({ data }) } getTableData = async() => { co

我将我的react项目转移到redux&redux传奇。最初,我调用一个异步方法来获取大型数据集,然后在本地状态下进行设置,如下所示:

// Component.jsx
componentDidMount() {
   const dataPromise = this.getTableData()
   const data = await dataPromise
   this.setState({ data })
}

getTableData = async() => {
   const response = await APIUtils.getTableData()
   let data = null
   if (response && response.code === "200") {
      data = response.data
   }
   return data
}
现在有了redux,我就这样改变它

// Component.jsx
componentDidMount() {
  const data = this.props.getTableData() // how to get data here?
  this.setState({ data })
}

// ActionCreator.js
function getTableData() {
   return {
     type: "GET_TABLE_DATA"
   }
}

// saga.js
function *getTableData() {
   try {
        const response = yield call(APIUtils.getTableData)
        ...
        // here I want to send this response.data to my comp without calling store action as the dataset is large and it is read-only.

    } catch (err) {
        yield put(showError(false))
    }
}

export default function* root() {
  yield all([
    takeLatest("GET_TABLE_DATA", getTableData)
  ])
}

我是redux传奇的新手,请告诉我最好的方法是什么。

您需要发送一个操作来更新您的商店。然后将组件连接到存储并从存储中获取数据。

整个想法是,我不想将此数据保留在存储中,因为数据集很大,不会在其他任何地方更改或使用。但如果不使用存储,数据将存储在组件中。如果你不想让它一直存在于存储中,你可以在你的组件卸载时发送一个动作将它从存储中删除。是的,基本上我只想让数据保持在组件状态。通过直接将响应数据传递给调用它的实例,我是否可以避免将数据存储在存储中以及组件卸载时的删除?我应该在分派的操作中使用回调方法吗?如果你不想使用store,那么你不需要sagas和actions,只需使用以前的方法,直接从组件调用api即可。说得好,如果你想在store中保存数据,请使用saga更新store。。。。若您想在本地类状态或变量中存储数据,无需使用saga,只需在组件内部获取即可。