在本页React Native State on React Native docs中,我们有以下语句:
道具由父级设置,并且在组件的整个生存期内都是固定的。
但是,在本页React文档上的React State and Lifecycle中,我们有以下声明:
因为this.props和this.state可能是异步更新的,所以不应该依赖它们的值来计算下一个状态。
我的误解在哪里?对我来说,当组件从DOM中移除时,组件的生命周期就结束了。因此,给定第一条语句,我不仅可以在render方法上访问组件的任何部分的this.props值,但这不是第二条语句所说的。
第二个语句只是说,您不应该使用this.props
或this.state
来更新状态,因为react将批处理多个更新。如果你这样做:
class MyComp extends React.Component{
constructor(props) {
super(props);
this.state = {
aValue: 0,
};
}
componentDidMount() {
this.setState({aValue: this.state.aValue + 1}); // should be 1 now
this.setState({aValue: this.state.aValue + 1}); // should be 2 now
}
render() {
return (
<p>{this.state.aValue}</p>
);
}
}
如果执行此操作,则可能出现以下状态:{avalue:1}
,因为react将批处理您的更新,导致第二次更新覆盖第一次更新,因为this.state.avalue
在第二次调用setstate()
时尚未更新,仍然是0
。
相反,您必须将一个函数传递给setstate()
,该函数将传递新的状态和道具并返回下一个状态:
this.setState((nextState, nextProps) => ({aValue: nextState.aValue + 1}));
没有提到您可以在哪里访问this.state
或this.props
。
我试图理解下面的反应HOC; 下面是另一个组件; 具体来说我是想了解 如果它“DisplayTheCret”访问道具“secretToLife”或WrappedComponent?正确看待这一问题的方法是什么? “const WrappedComponent=withSecretToLife(displaytescret);”行位于“const displaytescret=props”行之后=
悬而未决...
我试图通过反应路由器将道具从一个组件传递到另一个组件。当我试图从子组件获取道具时,我得到了这样一条消息。这是我的代码: Tracks.jsx: app.jsx: Album.jsx:
当设置组件的初始状态时,使用通过道具传入的数据,我是否应该创建一个新的对象,执行类似于... 或者这样做是安全的...
我有一个React组件,它获取一个配置对象作为道具,它看起来像这样: 在某些情况下,我希望通过使用传入另一个对象来禁用组件显示的功能,如下所示: 这工作正常,不是问题。 但是,我还希望确保使用我的组件的客户端代码提供正确的配置对象: 如果active为true,则需要foo 如果active为false,则foo是可选的,不需要提供 我如何为这样的情况定义道具类型? 我试过: 但这给了我以下警告:
我对这个问题很疯狂... 首先,我对React还是新手,其次,在发布之前,我尝试过:在React router v4中将自定义道具传递给路由器组件,React子组件不接收道具 但是运气不好... 我试图实现的是简单地将路由添加到现有的React项目中。 例如,顶级(父级)类如下所示: 注意:错误位于属性“getProfiles”在类型“Readonly”上不存在 儿童班: } 所以我不知道如何传递