Javascript 如何在ES6类中声明公共函数?
我正在尝试在React ES6类的扩展React.Component中添加一个公共函数。但是,我尝试过的任何方法都不能使该函数对其他组件公开 欢迎任何提示 以下是我尝试过的一些例子: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
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组件的设计不允许将方法暴露于应用程序的其他部分;那不是他们的目的。只有组件本身应该调用它自己的方法。如果某个组件需要被另一个组件调用,那么函数将作为一个道具传递。但是不应该有“公共”方法的意义。这不应该是必需的,因为构造函数中的这个大概是正确的……不幸的是,这没有任何区别。我应该把我的问题说得更准确,并解释我已经试过了,抱歉。