React组件中另一个文件中的React JS调用函数

bpdg

我创建了一个函数,该函数是一个名为Modal.js文件的独立React组件,我想调用该按钮来打开Modal另一个React组件-我该如何实现?

Modal.js

class Modal extends React.Component {
  state = {
    loginOpened: false,
    signupOpened: false
  };

  openModal = modalType => () => {
    if (modalType === "login") {
      this.setState({
        loginOpened: true,
        signupOpened: false
      });
    } else if (modalType === "signup") {
      this.setState({
        loginOpened: false,
        signupOpened: true
      });
    }
  };

  closeModal = modalType => () => {
    if (modalType === "login") {
      this.setState({
        loginOpened: false
      });
    } else if (modalType === "signup") {
      this.setState({
        signupOpened: false
      });
    }
  };

    render() {
      return (
          <>
              <Modal isOpen={loginOpened} onRequestClose={this.closeModal("login")}>
                <h1>Login</h1>
                <button onClick={this.openModal("signup")}>Open Signup</button>
                <button onClick={this.closeModal("login")}>Close this modal</button>
              </Modal>

              <Modal isOpen={signupOpened} onRequestClose={this.closeModal("signup")}>
                <h1>Sign Up</h1>
                <button onClick={this.openModal("login")}>Open Login</button>
                <button onClick={this.closeModal("signup")}>Close this modal</button>
              </Modal>

              <button onClick={this.openModal("login")}>Open Login</button>
              <button onClick={this.openModal("signup")}>Open Signup</button>
          </>
      );
    }
}

  export default Modal;

我想将其移动到Navigation.js因此,当单击这些按钮时,将调用模式窗口

<button onClick={this.openModal("login")}>Open Login</button>
<button onClick={this.openModal("signup")}>Open Signup</button>
巴斯蒂安·E。

实现此目的的最简单方法已结束Context

您应该拥有的文件是:

// ModalContext.js
import {createContext} from 'react'

export default createContext()
// Root.js -> This file should be on top of your application
import React from 'react'
import ModalContext from './ModalContext'

class ModalProvider extends React.Component {
  state = {
    loginOpened: false,
    signupOpened: false
  };

  openModal = modalType => () => {
    if (modalType === "login") {
      this.setState({
        loginOpened: true,
        signupOpened: false
      });
    } else if (modalType === "signup") {
      this.setState({
        loginOpened: false,
        signupOpened: true
      });
    }
  };

  closeModal = modalType => () => {
    if (modalType === "login") {
      this.setState({
        loginOpened: false
      });
    } else if (modalType === "signup") {
      this.setState({
        signupOpened: false
      });
    }
  };

  render(props) {
    return 
      <ModalContext.Provider value={{openModal: this.openModal, closeModal: this.closeModal}}>
        <Modal isOpen={loginOpened} onRequestClose={this.closeModal("login")}>
          <h1>Login</h1>
          <button onClick={this.openModal("signup")}>Open Signup</button>
          <button onClick={this.closeModal("login")}>Close this modal</button>
        </Modal>
        <Modal isOpen={signupOpened} onRequestClose={this.closeModal("signup")}>
           <h1>Sign Up</h1>
           <button onClick={this.openModal("login")}>Open Login</button>
           <button onClick={this.closeModal("signup")}>Close this modal</button>
        </Modal>
        {props.children}
      </ModalContext.Provider>
    )
  }
}

export default
// Anywhere where you need to control your modals
import ModalContext from './ModalContext'

class MyComponent extends React.Component {
  ...
  render(props) {
    return (
      <ModalContext.Consumer>
        {({openModal, closeModal}) => <button onClick={openModal("login")}>Open Login</button>}
      </ModalContext.Consumer>
    )
  }
}

您可以在此处查看更多有关上下文的信息

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从React组件中的另一个文件调用函数

来自分类Dev

React-如何将API数据从一个组件传递到另一个js文件中的另一个组件?

来自分类Dev

从React组件函数中的另一个文档调用普通javascript函数

来自分类Dev

我如何在React Native中从另一个组件调用函数?

来自分类Dev

在React中调用多个函数,在组件内部调用一个函数,在组件外部调用另一个函数?

来自分类Dev

在React.Js中创建一个组件作为另一个组件的子组件

来自分类Dev

如何在React组件中的另一个函数中访问useEffect的异步数据

来自分类Dev

在另一个函数中调用JS函数

来自分类Dev

我想在 react js 中的另一个文件上使用类组件但没有服务器?

来自分类Dev

React.js:从另一个组件调用函数?

来自分类常见问题

React.js:将一个组件包装到另一个组件中

来自分类Dev

修改React.js中另一个组件中一个组件的HTML元素

来自分类Dev

修改React.js中另一个组件中一个组件的HTML元素

来自分类Dev

修改React.js中另一个组件中一个组件的HTML元素

来自分类Dev

将道具传递到React.js中的另一个组件

来自分类Dev

我如何从React JS中的另一个组件路由

来自分类Dev

如何从 React.js 中的另一个文件实际启动一个函数

来自分类Dev

React组件使用lambda函数调用另一个React组件?

来自分类Dev

使用node.js在javascript中的另一个文件中调用函数

来自分类Dev

如何从一个组件访问状态值到另一个文件中的另一个函数(不是组件)?反应 js

来自分类Dev

如何在React.js中从一个组件(子组件)到另一个组件(父组件)获取值?

来自分类Dev

从BrightScript中的另一个文件调用函数

来自分类Dev

从BrightScript中的另一个文件调用函数

来自分类Dev

在另一个Lisp文件中调用函数

来自分类Dev

如何从React中的另一个文件调用对话框

来自分类Dev

无法通过React.js中的组件设置包含另一个组件的div的样式显示

来自分类Dev

如何将组件作为道具传递给 react js 中的另一个组件?

来自分类Dev

如何通过在 react.js 中从该组件设置道具来重定向到另一个组件

来自分类Dev

从vue.js中的另一个组件调用一个组件

Related 相关文章

  1. 1

    如何从React组件中的另一个文件调用函数

  2. 2

    React-如何将API数据从一个组件传递到另一个js文件中的另一个组件?

  3. 3

    从React组件函数中的另一个文档调用普通javascript函数

  4. 4

    我如何在React Native中从另一个组件调用函数?

  5. 5

    在React中调用多个函数,在组件内部调用一个函数,在组件外部调用另一个函数?

  6. 6

    在React.Js中创建一个组件作为另一个组件的子组件

  7. 7

    如何在React组件中的另一个函数中访问useEffect的异步数据

  8. 8

    在另一个函数中调用JS函数

  9. 9

    我想在 react js 中的另一个文件上使用类组件但没有服务器?

  10. 10

    React.js:从另一个组件调用函数?

  11. 11

    React.js:将一个组件包装到另一个组件中

  12. 12

    修改React.js中另一个组件中一个组件的HTML元素

  13. 13

    修改React.js中另一个组件中一个组件的HTML元素

  14. 14

    修改React.js中另一个组件中一个组件的HTML元素

  15. 15

    将道具传递到React.js中的另一个组件

  16. 16

    我如何从React JS中的另一个组件路由

  17. 17

    如何从 React.js 中的另一个文件实际启动一个函数

  18. 18

    React组件使用lambda函数调用另一个React组件?

  19. 19

    使用node.js在javascript中的另一个文件中调用函数

  20. 20

    如何从一个组件访问状态值到另一个文件中的另一个函数(不是组件)?反应 js

  21. 21

    如何在React.js中从一个组件(子组件)到另一个组件(父组件)获取值?

  22. 22

    从BrightScript中的另一个文件调用函数

  23. 23

    从BrightScript中的另一个文件调用函数

  24. 24

    在另一个Lisp文件中调用函数

  25. 25

    如何从React中的另一个文件调用对话框

  26. 26

    无法通过React.js中的组件设置包含另一个组件的div的样式显示

  27. 27

    如何将组件作为道具传递给 react js 中的另一个组件?

  28. 28

    如何通过在 react.js 中从该组件设置道具来重定向到另一个组件

  29. 29

    从vue.js中的另一个组件调用一个组件

热门标签

归档