Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ES6类中声明公共函数?_Javascript_Reactjs_Components_Ecmascript 6 - Fatal编程技术网

Javascript 如何在ES6类中声明公共函数?

Javascript 如何在ES6类中声明公共函数?,javascript,reactjs,components,ecmascript-6,Javascript,Reactjs,Components,Ecmascript 6,我正在尝试在React ES6类的扩展React.Component中添加一个公共函数。但是,我尝试过的任何方法都不能使该函数对其他组件公开 欢迎任何提示 以下是我尝试过的一些例子: import React, { PropTypes } from 'react' import ChildComponent from './ChildComponent' export class ArticleModal extends React.Component<void, Props, void

我正在尝试在React ES6类的扩展React.Component中添加一个公共函数。但是,我尝试过的任何方法都不能使该函数对其他组件公开

欢迎任何提示

以下是我尝试过的一些例子:

import React, { PropTypes } from 'react'
import ChildComponent from './ChildComponent'

export class ArticleModal extends React.Component<void, Props, void> {
  static propTypes = {
  };
  constructor (props) {
    super(props)
  }
  static privateMethod () {
    // This doesn't work
  }
  set privateMethod2 () {
    // This doesn't work either
  }
  privateMethod3 () {
    // ...and neither does this.
  }
  render () {
    return (
      <p>Some content</p>
    )
  }
}
const mapStateToProps = (state) => ({
})
export default connect((mapStateToProps), {
})(ArticleModal)
import React,{PropTypes}来自“React”
从“./ChildComponent”导入ChildComponent
导出类ArticleModal扩展React.Component{
静态类型={
};
建造师(道具){
超级(道具)
}
静态私有方法(){
//这不管用
}
set privateMethod2(){
//这也不行
}
私有方法3(){
//…这也不是。
}
渲染(){
返回(
一些内容

) } } 常量mapStateToProps=(状态)=>({ }) 导出默认连接((MapStateTops){ })(第2条)
像这样修改构造函数

constructor (props) {
    super(props);
    this.privateMethod3 = this.privateMethod3.bind(this);
}

然后尝试调用privateMethod3

你能看到正确的
.render()
吗?是的,它呈现得很好,就在我尝试调用任何私有方法时,我得到了错误<代码>未捕获类型错误:此。_component.privateMethod不是一个函数。_component我绑定了
此。_component
似乎很好,我从React和Redux获得了方法,我发现它是存储在
this中的正确组件。_component
变量。
.privateMethod3
应该具有相同的“可达性”作为
。渲染
;我不明白只有一个是怎么工作的…啊,现在我明白你的意思了。不,我看不到render方法,但组件确实进行了渲染。我想这确实帮助我解决了这个问题。答案是从组件中访问“renderElement”,在那里我找到了一个“type”对象,该对象使用可用的方法引用了该类。不过,这确实是一个糟糕的解决方案,就像我只是访问类而不是实例一样。你想实现什么?React组件的设计不允许将方法暴露于应用程序的其他部分;那不是他们的目的。只有组件本身应该调用它自己的方法。如果某个组件需要被另一个组件调用,那么函数将作为一个道具传递。但是不应该有“公共”方法的意义。这不应该是必需的,因为构造函数中的
这个
大概是正确的……不幸的是,这没有任何区别。我应该把我的问题说得更准确,并解释我已经试过了,抱歉。