我发现无法显示所有代码,因为太多,但我的问题是React Native
,Redux
,ListView
和Navigator
。
我的Redux状态存储一个项目数组,精美地显示在项目的ListView
,onPress
上,将Navigator
推送到另一个显示项目详细信息的场景。当我发出一个redux动作(来自道具),即:Click
(更新Redux Store中的值)时,动作被触发,并出现在调试控制台上,但是屏幕上的元素没有更新,如果我返回ListView,它会显示更新。
我在调度redux操作后尝试将各种想象代码navigator.replace
作为<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/toolbarHeight"
app:collapseIcon="@drawable/collapseBackIcon" />
到同一路径但不起作用。
我忘了做任何事情?
我写了一个小代码,以便更好地解释我对刷新屏幕的理解。
代码就是这个问题 Need help on some concepts about ReactNative and Redux and Navigator
我真的需要帮助。 提前致谢
答案 0 :(得分:1)
由于你的问题缺乏代码,很难猜出你实际在做什么。但是我会继续猜测 - redux
正在修改props
并且您没有任何正在更新的状态集。
如果您阅读official doc:
通知React数据更改的常用方法是调用 setState(数据,回调)。此方法将数据合并到this.state和 重新渲染组件。当组件完成重新渲染时, 调用可选的回调。大部分时间你都不需要 提供回调,因为React将负责保持您的UI 为您提供最新信息。
在此之后,我会建议道具的哪个属性正在改变,你可以将它设置为一个状态。然后,您可以在state
方法中根据render
撰写条件。
类似的东西:
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>
);
}
});