我有一个es6 react组件,我希望状态的初始值依赖于传递的道具的初始值,但它的值总是false:
<AttachStateToProps VALUE=false />
class AttachStateToProps extends React.Component {
state = {
stateValue: this.props.VALUE,
}
render() {
console.log('Value of Prop - ', this.props.VALUE)
console.log('Value of State - ', this.state.stateValue)
return null
}
}
`Value of Prop - false` // this changes whenever I change prop value in
<AttachStateToProps />
`Value of State - false` // this does not change accordingly.
我想这可能与state/setstate是异步的和旧的getInitialState
有关,但我不知道为什么。
从构造函数中的道具初始化状态,或作为类属性初始化状态,不会在道具更改时更新状态。但是,react确实检测到道具更改,并重新发送组件。
示例:
class AttachStateToProps extends React.Component {
state = {
stateValue: this.props.VALUE,
}
render() {
console.log('Value of Prop - ', this.props.VALUE)
console.log('Value of State - ', this.state.stateValue)
return null
}
}
const renderWithVal = (val) => ReactDOM.render(
<AttachStateToProps VALUE={val} />,
demo
);
renderWithVal(5);
renderWithVal(15);
renderWithVal(115);
<script crossorigin src="https://unpkg.com/react@16/umd/react.development.js"></script>
<script crossorigin src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
<div id="demo"></div>
2)有没有另一种方法可以重写这个逻辑而不使用道具来设置状态? 父组件: 子组件
我在SocketIO的帮助下创建了一个小的ReactJS仪表板,用于实时更新。即使我已经更新了仪表板,但我不太确定我是否做得正确,这让我很困扰。 最让我恼火的是getInitialState中作为反模式POST的道具。我创建了一个从服务器获取实时更新的仪表板,除了加载页面之外,不需要用户交互。根据我所读到的,应该包含决定是否重新呈现组件的内容,而...我还不知道。 但是,当最初调用时,只能传递道具
我有一个React组件,它获取一个配置对象作为道具,它看起来像这样: 在某些情况下,我希望通过使用传入另一个对象来禁用组件显示的功能,如下所示: 这工作正常,不是问题。 但是,我还希望确保使用我的组件的客户端代码提供正确的配置对象: 如果active为true,则需要foo 如果active为false,则foo是可选的,不需要提供 我如何为这样的情况定义道具类型? 我试过: 但这给了我以下警告:
在本页React Native State on React Native docs中,我们有以下语句: 道具由父级设置,并且在组件的整个生存期内都是固定的。 但是,在本页React文档上的React State and Lifecycle中,我们有以下声明: 因为this.props和this.state可能是异步更新的,所以不应该依赖它们的值来计算下一个状态。 我的误解在哪里?对我来说,当组件
我想存储一组/值,但是s不一定是增量的,这意味着数据可以是: 因此,我试图创建一个c#等价的