可以通过另一个组件中的 onClick 侦听器调用 React JS class 吗?

Can a React JS class be called via an onClick listener in another Component?

我有这样的代码:

import React from "react";
import Overlay from "./Overlay";

export default class TagListItem extends React.Component {

    render() {
        return(
            <div className={'tag'} onClick={() => <Overlay data={this.props}/>}>
                {this.props.tag}
            </div>
        )
    }
}

使用断点我已经能够确定 onClick 事件触发,但我的覆盖 class 没有被触发(点击 'tag' 时覆盖实际上没有发生任何事情)。这是我的覆盖代码,我哪里错了?无法通过 onClick 调用 class 吗?

import React from "react";
import ImagesAndTags from "./ImagesAndTags";

export default class Overlay extends React.Component {
    constructor(props) {
        super(props);
        this.state = {
            manifest: [],
        }
    }
    render() {
        const imagesAndTags = new ImagesAndTags();
        imagesAndTags.getManifest(this.props.imageName, this.props.tag)
            .then(manifest => {
                this.setState({manifest: manifest})
            })
        return(
            <div className={'overlay'}>
                {this.state.manifest}
            </div>
        )
    }
}

不,你不能那样做

export default class TagListItem extends React.Component {

    render() {
        return(
            <div className={'tag'} onClick={() => <Overlay data={this.props}/>}>
                {this.props.tag}
            </div>
        )
    }
}

相反,您可以创建一个状态来控制是否要打开叠加层

export default class TagListItem extends React.Component {
      this.state ={
    overlay = false
}
    render() {
        return(
            <div className={'tag'} onClick={() => this.setState(state=>{overlay : !state.overlay})}>
    {this.state.overlay && <Overlay data={this.props}/>}
                {this.props.tag}
            </div>
        )
    }
}