如何将函数传递给另一个反应组件?

桑凯特·辛格

假设我有这个 Icon 组件,点击它会打开一个对话框

export default class Icon extends Component {


    look (imgdes, i) {
        const openDialog=()=> {
                    document.getElementById(i).style.display = "block";
      }

        const  closeDialog=()=> {
                document.getElementById(i).style.display = "none";
      }
        return (
                <div key={i} onClick={openDialog}>
                    <Dialog closed={closeDialog}/>
                </div>
            );
        }


    render () {
        return (
                <div className="pro" >
                    {this.state.img.map(this.look)}
                </div>
        );
    }
};

这是对话框组件,单击 span 标记制作的 X 后应将其关闭

    export default class Dialogbox extends Component {

  render() {
    return (
      <div className="Dialog">
         <span className="close" onClick={this.props.closed}>&times;</span>
      </div>
    );
  }
}

问题在于 opendialog 正在工作,但 closeDialog 不起作用。我试图将 closeDialog 作为道具传递,但没有奏效。有没有其他方法可以做到这一点,或者有人可以建议改进此代码?

汉纳德·雷曼

让我们尝试不同的方法

对话框组件文件

因为您需要多个对话框。我们需要标识符来唯一标识对话框,这就是我将使用数据属性的原因。

 export default class Dialogbox extends Component {
  render() {
    return (
      <div data-id={this.props.id} className="Dialog">
         <span data-id={this.props.id} className="close" onClick={this.props.closed}>&times;</span>
      </div>
    );
  }
}

图标组件文件

您正在使用 document.getElementById 。所以它必须有一个唯一的标识符 id。否则它将无法工作。这就是为什么我们将通过 props id 来唯一地标识每个对话框。

export default class Icon extends Component {
    constructor(props){
       super(props)
       this.look=this.look.bind(this);
       this.show=this.show.bind(this);
       this.close=this.close.bind(this);
       this.state = {open: false};
    }
    show(ev){
     const id=ev.target.dataset.id;
     document.getElementById(id).style.display='block';
     this.setState({open: true});
    }
    close(ev){
     const id=ev.target.dataset.id;
     document.getElementById(id).style.display='none';
     this.setState({open: false});
    }
    look (imgdes, i) {
        return (
                <div key={i} data-id={i} onClick={this.show}>
                    <Dialog closed={this.close} id={i}/>
                </div>
            );
        }

    render () {
        return (
                <div className="pro" >
                    {this.state.img.map(this.look)}
                </div>
        );
    }
};

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

反应如何将一个组件及其道具传递给另一个组件

来自分类Dev

如何将一个函数的值传递给另一个函数?

来自分类Dev

组件如何将道具传递给另一个组件?

来自分类Dev

如何将数据传递给组件到另一个组件

来自分类Dev

如何将唯一ID作为道具传递给另一个组件

来自分类Dev

React-如何将状态传递给另一个组件

来自分类Dev

如何将状态className变量传递给React中的另一个组件

来自分类Dev

如何将元素传递给另一个组件(最简单的方法)?

来自分类Dev

ReactJS:如何将键码传递给另一个组件

来自分类Dev

如何将表单输入字段传递给 React 中的另一个组件?

来自分类Dev

如何将图像 url 作为道具传递给另一个组件?

来自分类Dev

如何将数组从 api 作为道具传递给另一个组件

来自分类Dev

Ember.js如何将一个组件作为参数传递给另一个组件?

来自分类Dev

Ember.js如何将一个组件作为参数传递给另一个组件?

来自分类Dev

Angular 6 如何将一个组件中的数组传递给另一个组件

来自分类Dev

如何将Js函数数组传递给另一个Js函数?

来自分类Dev

如何将函数输出传递给另一个函数

来自分类Dev

如何将void函数传递给另一个void函数?

来自分类Dev

如何将tanh函数作为参数传递给另一个函数?

来自分类Dev

如何将函数作为参数传递给另一个函数?

来自分类Dev

如何将泛型函数作为参数传递给另一个函数?

来自分类Dev

如何将另一个函数作为变量传递给R中的函数?

来自分类Dev

如何将命名参数传递给另一个函数需要的函数?

来自分类Dev

如何将参数传递给作为另一个函数参数的函数

来自分类Dev

如何将&rest参数传递给emacs lisp中的另一个函数?

来自分类Dev

如何将参数数组传递给JavaScript中的另一个函数?

来自分类Dev

C ++:如何将指针传递给另一个类的成员函数?

来自分类Dev

如何将局部变量传递给另一个函数?

来自分类Dev

如何将谷歌地理位置坐标传递给另一个函数?

Related 相关文章

  1. 1

    反应如何将一个组件及其道具传递给另一个组件

  2. 2

    如何将一个函数的值传递给另一个函数?

  3. 3

    组件如何将道具传递给另一个组件?

  4. 4

    如何将数据传递给组件到另一个组件

  5. 5

    如何将唯一ID作为道具传递给另一个组件

  6. 6

    React-如何将状态传递给另一个组件

  7. 7

    如何将状态className变量传递给React中的另一个组件

  8. 8

    如何将元素传递给另一个组件(最简单的方法)?

  9. 9

    ReactJS:如何将键码传递给另一个组件

  10. 10

    如何将表单输入字段传递给 React 中的另一个组件?

  11. 11

    如何将图像 url 作为道具传递给另一个组件?

  12. 12

    如何将数组从 api 作为道具传递给另一个组件

  13. 13

    Ember.js如何将一个组件作为参数传递给另一个组件?

  14. 14

    Ember.js如何将一个组件作为参数传递给另一个组件?

  15. 15

    Angular 6 如何将一个组件中的数组传递给另一个组件

  16. 16

    如何将Js函数数组传递给另一个Js函数?

  17. 17

    如何将函数输出传递给另一个函数

  18. 18

    如何将void函数传递给另一个void函数?

  19. 19

    如何将tanh函数作为参数传递给另一个函数?

  20. 20

    如何将函数作为参数传递给另一个函数?

  21. 21

    如何将泛型函数作为参数传递给另一个函数?

  22. 22

    如何将另一个函数作为变量传递给R中的函数?

  23. 23

    如何将命名参数传递给另一个函数需要的函数?

  24. 24

    如何将参数传递给作为另一个函数参数的函数

  25. 25

    如何将&rest参数传递给emacs lisp中的另一个函数?

  26. 26

    如何将参数数组传递给JavaScript中的另一个函数?

  27. 27

    C ++:如何将指针传递给另一个类的成员函数?

  28. 28

    如何将局部变量传递给另一个函数?

  29. 29

    如何将谷歌地理位置坐标传递给另一个函数?

热门标签

归档