Link 声明 ReactJS 的道具
Link Props to State ReactJS
我正在使用 reactjs 和 Redux 将数据从一个页面传输到另一个页面,
在第一页我正在发送一个动作来保存值,
这很好用
在第二页,我有一个组件使用这个保存的值
所以 this.props.values 给我准确的值
但是在这个组件中我必须在渲染部分使用 this.state.values
有没有办法在我的第二页 link this.props.values 到我的 this.state.values ?
Is there a way to link this.props.values to my this.state.values in my second page ?
如果这就是您想要的,将 props
放入 state
的最佳方法是在 constructor
class Component extends React.Componet {
constructor(props) {
super(props)
this.state = { values: props.values || [] } // [] or some default value
}
}
只需确保使用 componentWillReceiveProps
处理 props
值发生变化的情况
componentWillReceiveProps (nextProps) {
if (!equals(this.props.values, nextProps.values)) {
this.setState({ values: nextProps.values })
}
}
equals
是您想要的任何内容(==
、lodash#deepEquals
等)
您可以像这样使用 class,或者如果您以函数风格编写,将 props 作为参数传递并简单地调用 return 作为 {props.values}
import React, {Component} from 'react';
class testSample extends Component {
constructor(props) {
super(props)
console.log(props.value); //check whether you are receiving values in browser console
this.state = { values: props.values }
}
render(){
return(
<div>{this.state.values} </div>
)
}
}
export default testSample
或者您可以像这样直接访问它们,而不是再次分配给状态。
import React, {Component} from 'react';
class testSample extends Component {
constructor(props) {
super(props)
console.log(props.value); //check whether you are receiving values in browser console
}
render(){
return(
<div>{this.props.values} </div>
)
}
export default testSample
我正在使用 reactjs 和 Redux 将数据从一个页面传输到另一个页面, 在第一页我正在发送一个动作来保存值, 这很好用
在第二页,我有一个组件使用这个保存的值 所以 this.props.values 给我准确的值 但是在这个组件中我必须在渲染部分使用 this.state.values
有没有办法在我的第二页 link this.props.values 到我的 this.state.values ?
Is there a way to link this.props.values to my this.state.values in my second page ?
如果这就是您想要的,将 props
放入 state
的最佳方法是在 constructor
class Component extends React.Componet {
constructor(props) {
super(props)
this.state = { values: props.values || [] } // [] or some default value
}
}
只需确保使用 componentWillReceiveProps
props
值发生变化的情况
componentWillReceiveProps (nextProps) {
if (!equals(this.props.values, nextProps.values)) {
this.setState({ values: nextProps.values })
}
}
equals
是您想要的任何内容(==
、lodash#deepEquals
等)
您可以像这样使用 class,或者如果您以函数风格编写,将 props 作为参数传递并简单地调用 return 作为 {props.values}
import React, {Component} from 'react';
class testSample extends Component {
constructor(props) {
super(props)
console.log(props.value); //check whether you are receiving values in browser console
this.state = { values: props.values }
}
render(){
return(
<div>{this.state.values} </div>
)
}
}
export default testSample
或者您可以像这样直接访问它们,而不是再次分配给状态。
import React, {Component} from 'react';
class testSample extends Component {
constructor(props) {
super(props)
console.log(props.value); //check whether you are receiving values in browser console
}
render(){
return(
<div>{this.props.values} </div>
)
}
export default testSample