[英]react - access state outside of component
我明白这是否看起来像一个菜鸟问题,但我正在尝试教自己做出反应。
上下文是,我创建了一个包含多个CardItem
组件的Card
组件。 每当单击 CardItem 的主 div 时,同一 CardItem 内的clicked
状态就会从 false 变为 true; 我希望从Cards
组件访问CardItem
组件的clicked
状态。
我的代码如下:
卡片.js
import React, { Component } from 'react'
import Carditem from './Carditem'
import "./Cards.css"
export class Cards extends Component {
constructor(props) {
super(props)
this.state = {childClicked: 0}
this.handler = this.handler.bind(this)
}
handler(){
this.setState((ps)=>({
childClicked: ps + 1
}))
}
render() {
console.log(this.state.childClicked)
return (
<div>
<div className="cards">
<Carditem cardTitle="Online membership" cardPrice="€150"></Carditem>
<Carditem cardTitle="Deluxe package" cardPrice="€400" onClick={this.handler} ></Carditem>
<button className={this.childClicked >= 1 ? 'child-clicked-class' : 'no-child-clicked-class'}>Button</button>
</div>
</div>
)
}
}
export default Cards
卡片项目.js
import React, { Component } from 'react'
import "./Carditem.css"
export class Carditem extends Component {
constructor(props) {
super(props)
this.state = {clicked: false}
this.toggleClick = this.toggleClick.bind(this)
}
toggleClick(){
this.setState((prevstat) => ({
clicked: !prevstat.clicked
}))
}
render() {
const {cardTitle, cardPrice } = this.props
return (
<div className={`card card-light ${this.state.clicked ? 'card-light-clicked' : 'card-light'}`} onClick={this.toggleClick}>
<h2 className="card-title">{cardTitle}</h2>
<p className="card-description">Lorem ipsum dolor sit amet, consectetur adipiscing elit, dsadas,usnaytw iunxgafu.</p>
<span className="card-price">{cardPrice}</span>
</div>
)
}
}
export default Carditem
我希望的最终结果是,如果任何CardItem
组件的状态为 true,则更改Cards
按钮的类名。
提前致谢。
您将点击处理程序作为名为onClick
道具从父Card
传递到子CardItem
,您必须访问该道具并在单击子项中的项目时切换它,因此您必须在函数toggleClick
调用它:
toggleClick(){
this.setState((prevstat) => ({
clicked: !prevstat.clicked
}))
this.props.onClick()
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.