javascript - 调用react函数

标签 javascript reactjs

如何从另一个类和文件调用函数 _toggleDropdown 或 _onWindowClick?

DropDown.js

export default class DropDown extends React.Component {

  _toggleDropdown(e) {
    e.preventDefault()
    this.setState({
      isActive: !this.state.isActive
    })
  }

  _onWindowClick(event) {
    const dropdownElement = findDOMNode(this)
    if (event.target !== dropdownElement && !dropdownElement.contains(event.target) && this.state.isActive) {
      this.setState({
        isActive: false
      })
    }
  }
}

Header.js

<a onClick={what???}>test</a>

最佳答案

如果 DropDown 组件在 Header 中呈现,您可以使用 refs 获取下拉实例并调用其方法。

Header.js

render() {
   return (<div>
      <DropDown ref="dd"/>
      <a onClick={e => this.refs.dd._toggleDropdown(e)}>Toggle</a>
  </div>)
}

如果它们完全不相关,您最好从本地状态切换到某些全局状态管理解决方案,例如 Flux 或 Redux。并使下拉状态成为全局应用程序状态的一部分,任何组件都可以通过分派(dispatch)相应的操作来更改该状态。

关于javascript - 调用react函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38481931/

相关文章:

javascript - React Bootstrap Navbar挂电脑

javascript - 停止在每次渲染时调用函数

reactjs - 无法读取未定义的 CompileError : Begins at CSS selector undefined 'type' 的属性 `npm run build`

javascript - ReactJS错误: TypeError: Cannot read property 'props' of undefined

javascript - 打印对象给出的值与打印该对象的属性不同

javascript - 使用 javascript 提交具有不同值的表单

javascript - 如何通过ajax使用默认对象填充选择

javascript - Easeljs 可滚动容器

ruby-on-rails - 使用 React 和 Selenium-Webdriver 以 Rails 作为后端的前端测试

JavaScript 异常对象格式