【发布时间】:2019-02-14 10:11:45
【问题描述】:
我有两个组件,父组件和子组件。
家长:
class Parent extends React.Component {
constructor(){
super()
this.state = {
select: false
}
}
isSelect(){
this.setState({...this.state, select: !this.state.select})
}
render(){
const { Header, children } = this.props
return (
<>
<Header isSelect={this.isSelect} />
</>
)
}
}
孩子:
class Child extends React.Component {
render(){
const {title, isSelect} = this.props
/*problem here! can not get isSelect*/
return(
<div>
<p>{title}</p>
<button onClick={this.isSlect}>choose</button>
/*problem here! isSelect*/
</div>
)
}
}
使用中:
<Parent Header={<Child title='just for test' />} />
组件可以被渲染,但不能用于点击事件。
我想为子组件自动设置isSlect 函数,因为它只是调用父函数并恢复布尔值。所以在使用中再传一遍是没有意义的。
问题是我怎样才能通过这个isSelect? isSelect={this.isSelect} 似乎被 <Header isSelect={this.isSelect} /> 覆盖。
【问题讨论】:
-
你的问题我不清楚,你想从呈现 Parent 的组件中传递 isSelect,现在在 parent 本身内部,对吗?另外,我认为您提供的代码中存在一个错误......因为您正在渲染 Child 组件 2 次,首先在渲染父级时,您正在渲染 Child 元素并将渲染的组件传递给 Parent,然后在父级内部您正在以名称 Header 呈现渲染的组件
标签: reactjs