我需要继承状态。我可以继承状态吗?当我这样做时,我得到一个空状态。
class Example extends Component {
constructor(props) {
super();
this.state = {
param1:
};
}
...
}
class Example2 extends Example {
render() {
return (
{this.state.param1} // empty
)
}
}
答案 0 :(得分:1)
您可以使用常规合成,而不是使用继承,而是将整个Example
状态作为道具传递给Example2
,并使用传递给Example2
的道具作为初始状态。
示例
class Example extends React.Component {
state = {
param1: "test"
};
render() {
return <Example2 {...this.state} />;
}
}
class Example2 extends React.Component {
state = {...this.props};
render() {
return <div>{JSON.stringify(this.state)}</div>;
}
}
ReactDOM.render(<Example />, document.getElementById("root"));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
答案 1 :(得分:0)
React并不真正支持继承,您可以在此链接上找到更多信息:
https://reactjs.org/docs/composition-vs-inheritance.html#so-what-about-inheritance
您可以做的是拥有一个全局状态管理器(例如Redux)或通过以下方式将状态传递给Example2
组件:
class Example extends Component {
constructor(props) {
super(props);
this.state = {
param1: 'test'
};
render() {
return (
<Example2 state={this.state} />
);
}
}
之后,您将可以在Example2
的{{1}}中找到它。
答案 2 :(得分:0)
class Example extends Component {
constructor(props) {
super();
this.state = {
param1: "param1"
};
}
render() {
const { param1 } = this.state;
return (
<Example2 param1={param1} />
)
}
}
class Example2 extends Example {
render() {
const { param1 } = this.props;
return (
{param1}
)
}
}
答案 3 :(得分:0)
科维奇。您只能将一个组件的状态传递给另一个组件,例如以下代码:
class Example extends Component {
constructor(props) {
super();
this.state = {
param1:
};
}
render(){
return (<Example2 param1 ={this.state.param1} />)
}
...
}
class Example2 extends Example {
constructor(props) {
super();
this.state = {
param1: this.props.param1
};
}
render() {
return (
{this.state.param1} // empty
)
}
}
答案 4 :(得分:0)
您可以如下扩展状态:
constructor(props) {
super(props)
this.state = {
...this.state,
extraStuff: '',
}
}