子组件未调用父组件函数

苏哈斯

所以我有一个父组件和一个子组件。我在父组件中有一个函数,我已经绑定到父组件并将其传递给子组件以供子组件使用。但是,使用该函数的子组件中的 X 按钮无法调用该函数。

在标记重复之前,请查看我的代码,因为我查看了其他帖子,这些帖子不足以解决我的问题。

class SimulatorProgressPopup extends React.Component {
    constructor(props) {
        super(props);
        this.state = {show: props.show, data: props.data};
    }

    componentWillReceiveProps(nextProps) {
        this.setState({show: nextProps.show, data: nextProps.data});
    }

    render() {
        return (<div style={{display: this.state.show, position: "fixed", width: "500px", height:"300px", left:"50%", top:"50%", transform: "translate(-50%, -50%)", border: "1px solid black"}}>
            <button onClick={this.props.close}>X</button>
        </div>)
    }
}

class SingleSimulatorProgress extends React.Component {
    constructor(props) {
        super(props);
        this.state = {showPopup: false, data: props.data};
        this.popup = this.popup.bind(this);
        this.popupClose = this.popupClose.bind(this);
    }

    componentWillReceiveProps(nextProps) {
        this.setState({data: nextProps.data});
    }

    popup() {
        this.setState({showPopup: true});
    }

    popupClose() {
        this.setState({showPopup: false});
    }

    render() {
        return (<tr onClick={this.popup}>
            <td>{this.state.data.leId.substring(this.state.data.leId.length - 3, this.state.data.leId.length)}</td>
            <td className={this.state.data.status}>{this.state.data.status}</td>
            <td>{this.state.data.noOfFailedRequest}</td>
            <td>{this.state.data.requestSent}</td>
            <td>{this.state.data.responseReceived}</td>
            <td>{this.state.data.failureRate}</td>
            <td>{this.state.data.avgReqLatencyInMilis}</td>
            <SimulatorProgressPopup show={this.state.showPopup ? "block" : "none"} data={this.state.data} close={this.popupClose}/>
        </tr>)
    }
}
约翰·鲁德尔

您的问题是您没有阻止事件冒泡到父侦听器(整行中的那个)。所以你需要做的是阻止它

popupClose(e) {
    e.stopPropagation();
    this.setState({showPopup: false});
}

如果您不这样做,那么您实际上是在说 show 为假,然后在一个渲染周期中 show 为真。所以弹出窗口保持不变。

如果你想看,这里是现场直播

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在React的子组件中调用父函数

来自分类Dev

未调用子组件

来自分类Dev

从子组件中调用父组件函数

来自分类Dev

对父组件的异步函数调用

来自分类Dev

ReactJS:子组件调用父组件时,“ this.props”不是函数

来自分类Dev

触发子组件事件时如何调用父组件构造函数

来自分类Dev

如何从blazor的父组件调用子组件方法?

来自分类Dev

子组件中的 ondragend 事件调用父组件方法

来自分类Dev

如何在父组件中调用函数

来自分类Dev

子组件未向父组件的函数传递值

来自分类Dev

子组件未向父组件的函数传递值

来自分类Dev

this.props 不是父组件和子组件之间的函数

来自分类Dev

从React-Native ListView行的子组件中调用父函数

来自分类Dev

在Ember中完成Ember.run.later之后,如何确保子组件调用父函数

来自分类Dev

从使用 react native 中的 map 函数渲染的组件的父级调用子方法

来自分类Dev

ReactJS在子组件内两次调用函数未能两次设置父状态

来自分类Dev

反应在子组件中调用函数

来自分类Dev

如何从父组件调用React / Typescript子组件函数?

来自分类Dev

子组件未因父状态更改而更新

来自分类Dev

在父组件中的Angular MatStepper上调用子验证器

来自分类Dev

访问 ... 子组件的父组件的父组件的 html 元素

来自分类Dev

子组件未呈现

来自分类Dev

AngularJS ES6 父函数未被子组件调用

来自分类常见问题

Angular2:子组件访问父类变量/函数

来自分类Dev

在VueJS中将父函数传递给子组件

来自分类Dev

如何设置子组件的子组件的父组件状态

来自分类Dev

EmberJS触发子组件对父组件的操作

来自分类Dev

反应 子组件正在更改父组件

来自分类Dev

反应父组件不渲染子组件

Related 相关文章

热门标签

归档