【问题标题】:is it possible to retrieve state from Redux store for a particular review comments是否可以从 Redux 存储中检索特定评论评论的状态
【发布时间】:2020-02-05 07:08:24
【问题描述】:

我确实有一个带有状态的反应类组件。

class NewComponent extends Component {
  state = {
    modalIsOpen: false,
    aa: true,
    bb: false,
    cc: false,
    dd: false,
    ee: 1,
    dd: [],
    cc: [],
    ff: [],
    gg: [],
    vv: [],
    bb: '',
    rr: '',
    bb: '',
    axcx: 'recent',
    zxc: null,
    asd: [],
    qwe: '',
    asd: '',
    xc: false,
    wxc: false,
    zxcc: null,
    zxcxzc: [],
    zxc: {},
    zxc: false,
    zxc: [],
    zxc: null,
    zxc: '',
    imgGroup: aa.imgGroup,
    videoGroup: xx.videoGroup,
    docGroup: vv.docGroup,
  }
}

是否可以将这些状态存储在商店的某个地方并将其导入到此组件中。如果可以,请帮助我这样做。我是 redux 的新手。

任何帮助都会非常有帮助

【问题讨论】:

  • 不确定你要求什么,这个状态在 BrowseModalUpload 组件中,你想在哪里使用它们?
  • @Ivan 我收到了评论,实际上状态需要坐在某个商店。那么有什么方法可以导入
  • @midhunk 你想将对象存储在一个单独的文件中,或者你想在 store(redux store) 中初始化状态??
  • @sumanthmadishetty 来自审阅者的评论是该组件中所有状态的管理应该放在 redux 中

标签: javascript reactjs redux react-state-management


【解决方案1】:

这很容易做到。您需要做的就是将 reducer 中的这些变量添加到相应的存储中(让存储称为 youstore)。

Reducer.js

const initialState = {
    modalIsOpen: false,
    aa: true,
    bb: false,
    cc: false,
    dd: false,
    ee: 1,
    dd: [],
    cc: [],
    ff: [],
    gg: [],
    vv: [],
    bb: '',
    rr: '',
    bb: '',
    axcx: 'recent',
    zxc: null,
    asd: [],
    qwe: '',
    asd: '',
    xc: false,
    wxc: false,
    zxcc: null,
    zxcxzc: [],
    zxc: {},
    zxc: false,
    zxc: [],
    zxc: null,
    zxc: ''
}

export default (state = initialState, action) => {
  switch (action.type) {
    case SOME_ACTION:
    ......
}

现在,这应该可以作为道具从您的组件中获得。为此应使用 ma​​pStateToProps 方法。

Your_component.jsx

const mapStateToProps = state => {
  return {
        modalIsOpen: state.youstore.modalIsOpen,
        aa: state.youstore.aa,
        bb: state.youstore.bb,
        cc: state.youstore.cc,
        dd: state.youstore.dd,
        .......
  };
};

const mapDispatchToProps = dispatch => {
  return {
    someMethod: data => dispatch(somemethod(data)),
  };
};

export default connect(
    mapStateToProps,
    mapDispatchToProps
  )(your_Component);

要更改状态的值,您必须通过 ma​​pDispatchToProps 调度操作

【讨论】:

  • 我在上面的场景中有 1 个疑问——所以从上面的例子中,每当我需要改变状态时,我都需要调度一个动作方法?对吗?其主要是弹出相关代码,其值基于名为modalIsOpen的状态变量。所以根据你,哪个更好地维护组件内的状态或使用减速器,哪个用户继续关闭并打开它
  • @midhunk 是的,您可以通过调度操作来更改值
  • 你能检查我问题的第二部分吗?对不起,刚刚熟悉redux
  • @midhunk 您不必将每个状态都添加到存储中。将您从服务器获取的状态或您将从不同组件访问的数据放入存储中。对于模式弹出使用内部状态,您不必为此使用 redux
【解决方案2】:

你不应该在组件内部拥有状态,但如果你想要它,你需要有两个东西一个动作和一个减速器。在 reducer 中,你只是设置了状态

dispatch(createState(state))

你需要在你的组件中添加它,但我强烈反对它。所以正确的方法是创建你的 reducer.js 并在那里做广告。

  const myReducer = (initialState = state, action) => {
  switch (action.type) {
   ....
  }
};

所以当你创建你的 reducer 时,只需在那里传递初始状态。希望对您有所帮助!

【讨论】:

    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 2016-12-23
    • 2015-12-31
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-12
    相关资源
    最近更新 更多