道具值更改时更新组件
Update component when prop value changes
我有一个属性为home.ready = false
的对象。当对象完成获取数据、清理等操作后,它将变为home.ready= true
。
我需要我的组件来注册更改和更新。我的组件:
class HomeNav extends React.Component {
render() {
let data = this.props.data;
let uniqueTabs = _.uniq(_.map(data, x => x.tab)).sort();
let tabs = uniqueTabs.map((tab, index) => {
let itemsByTab = _.filter(data, (x => x.tab == tab));
return <Tabs key={tab} tab={tab} index={index} data={itemsByTab} />;
});
console.log(this.props)
return (
<section>
<div className="wb-tabs">
<div className="tabpanels">
{ this.props.ready ? {tabs} : <p>Loading...</p> }
</div>
</div>
</section>
)
}
};
ReactDOM.render(
<HomeNav data={home.data.nav} ready={home.ready}/>,
document.getElementById('home-nav')
);
这是主对象。这是一个获取数据的简单对象,一旦数据准备好,属性ready
就会从false
更改为true
。我无法让React认识到这种变化。React有时会说home
是未定义的。
由于您没有发布任何关于请求或数据格式的代码,我认为您已经解决了所有问题。因此,为了使组件按照当前的编写方式工作,您需要在tabs
({ this.props.ready ? tabs : <p>Loading...</p> }
)周围去掉大括号,然后,this.props.data
应该始终包含一个有效的数组,否则当您尝试排序、筛选等时,它会中断。
或者,您可以根据ready
属性进行早期退出:
class HomeNav extends React.Component {
render() {
if(!this.props.ready){
return <section>
<div className="wb-tabs">
<div className="tabpanels">
<p>Loading...</p>
</div>
</div>
</section>
}
let data = this.props.data;
let uniqueTabs = _.uniq(_.map(data, x => x.tab)).sort();
let tabs = uniqueTabs.map((tab, index) => {
let itemsByTab = _.filter(data, (x => x.tab == tab));
return <Tabs key={tab} tab={tab} index={index} data={itemsByTab} />;
});
console.log(this.props)
return (
<section>
<div className="wb-tabs">
<div className="tabpanels">
{tabs}
</div>
</div>
</section>
)
}
};
相关文章:
- 调度没有'无法立即更新组件
- React js更改状态不会更新组件
- 如何使用JavaScript更新JSP页面的一些组件
- 如何在加载Angular2.RC1子组件时更新它
- ReactJS组件中显示的视频未更新
- 如何创建独立于数组更新的组件列表
- 组件道具更改后更新redux存储
- 如何根据其他组件中的事件更新组件URL
- 在ReactJs中更新组件时更新jQuery slick carousel
- ReactJS:如何在改变状态后立即更新组件
- ReactJS - 在更改单独的类属性时更新组件
- Redux未更新组件
- 更新组件后,Javascript无法工作
- 从外部更新组件属性
- React用class查找所有组件,从外部更新组件状态或道具.模态叠加
- React-Redux connect()不更新组件,即使状态被改变而没有突变
- 道具值更改时更新组件
- Reactjs更新组件DidMount
- 反应:从渲染方法外部更新组件的 props,而不使用状态
- 如何获取模拟的反应事件以更新组件中 ref 的值