【问题标题】:About React Native, Redux , ListView and Navigator关于 React Native、Redux、ListView 和 Navigator
【发布时间】:2016-02-18 13:19:15
【问题描述】:

我发现无法显示所有代码,因为太多了,但我的问题是 React NativeReduxListViewNavigator

我的 Redux 状态存储了一个 items 数组,精美呈现在 ListView 中,onPress 在 item 上,将 Navigator 推送到另一个场景,其中呈现 item 详细信息。当我触发一个 redux 操作(来自道具)即:Click(更新 Redux Store 中的值)时,这些操作被触发,并出现在调试控制台上,但屏幕上的元素没有更新,如果我返回 ListView,它似乎已更新。

在调度 redux 操作后,我尝试了各种富有想象力的代码,如 navigator.replace 到同一路由但不起作用。

我忘了做什么?


我写了一个小代码来更好地解释我对刷新屏幕的不理解。

代码在这个问题中 Need help on some concepts about ReactNative and Redux and Navigator

我真的需要帮助。 提前致谢

【问题讨论】:

    标签: listview reactjs react-native redux navigator


    【解决方案1】:

    由于您的问题缺少代码,因此很难猜测您实际在做什么。但是我会继续猜测 - redux 正在修改 props 并且您没有任何正在更新的状态集。

    如果您阅读official doc

    通知 React 数据更改的常用方法是调用 设置状态(数据,回调)。此方法将数据合并到 this.state 和 重新渲染组件。当组件完成重新渲染时, 调用可选的回调。大多数时候你永远不需要 提供一个回调,因为 React 会负责保持你的 UI 为您提供最新信息。

    接下来,我建议无论 props 的哪个属性发生变化,都可以将其设置为状态。然后,您可以在 render 方法中根据 state 编写条件。

    类似:

    var Component = React.createClass({
      getInitialState() {
        return { someprop: this.props.someprop };
      },
      componentWillReceiveProps : function(nextProps) {
        this.setState({someprop: nextProps.someprop});
      },
      render() {
        return (
            <div>
              { this.state.someprop == "something" ? <ChildComp1 /> : <ChildComp2 />
            </div>
          );
      } 
    });
    

    【讨论】:

    • 谢谢,你很好理解我的问题,你用一种没有尝试过的方法回答。我正在尝试制作一个显示问题的应用程序 AllInOne。在您的回答中,您已将我引导到函数shouldComponentUpdate ( nextProps , nextstate ),但除了我的原始 props 之外,没有得到任何其他东西,尽管状态已更新 redux 。我一直在尝试,但没有关于这个问题的更多信息似乎很奇怪。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多