React / ES6 - >如何从另一个组件调用React组件类方法?

时间:2017-03-06 13:00:25

标签: reactjs es6-class

是否可以从类/组件中的其他(React)组件调用类方法?

示例:

// file x.js
import React, { Component } from 'react'

class X extends Component {
    methodY() {
        console.log('methodY')
    }
    render() {
        return <div />
    }
}

export default X



// file z.js
import React, { Component } from 'react'

class Z extends Component {
    render() {
        return <button onClick={X.methodY} />
    }
}
export default Z

1 个答案:

答案 0 :(得分:4)

从技术角度来看可能是可能的 - 但你真的不应该

在开始使用新框架来接受意识形态及其社区模式时,这一点非常重要。在React的情况下,没有类和方法之类的东西。相反,只有组件数据(以及某些扩展)。

遵循 flux 原则,您应该尝试以数据流单向的方式构建应用程序。从上到下。

因此,代替组件Z调用组件X上的函数,您可以让X从父组件接收修改该组件状态的函数,然后将新值传递给{ {1}}。

X

如您所见,父组件现在负责处理状态并将不同的兄弟组件连接在一起。

当您进一步探索React时,您可能会开始使用Redux来提取围绕数据的逻辑并完全在组件外部进行状态。您最终会得到的是演示组件和容器组件。