Reactjs 公开React组件函数
根据最佳实践公开某些react组件功能的正确选项是什么 选择1 在组件外部创建功能,如:Reactjs 公开React组件函数,reactjs,components,Reactjs,Components,根据最佳实践公开某些react组件功能的正确选项是什么 选择1 在组件外部创建功能,如: export const someFunction = () => { //do something } class MyComponent extends Component {} export default MyComponent; class MyComponent extends Component { someFunction() { // } } e
export const someFunction = () => { //do something }
class MyComponent extends Component {}
export default MyComponent;
class MyComponent extends Component {
someFunction() {
//
}
}
export default MyComponent;
使用上述组件:
import MyComponent, { someFunction } from './components/myAwesomeComponent';
class ChildComponent extends Component {
parentComponentFunction() {
someFunction();
}
render() {
<div>
<MyComponent />
</div>
}
}
import MyComponent frrom './components/myAwesomeComponent';
class ChildComponent extends Component {
parentComponentFunction() {
this.refs.parentComponent.someFunction();
}
render() {
<div>
<MyComponent ref="parentComponent" />
</div>
}
}
使用上述组件:
import MyComponent, { someFunction } from './components/myAwesomeComponent';
class ChildComponent extends Component {
parentComponentFunction() {
someFunction();
}
render() {
<div>
<MyComponent />
</div>
}
}
import MyComponent frrom './components/myAwesomeComponent';
class ChildComponent extends Component {
parentComponentFunction() {
this.refs.parentComponent.someFunction();
}
render() {
<div>
<MyComponent ref="parentComponent" />
</div>
}
}
从“/components/myAwesomeComponent”导入MyComponent;
类ChildComponent扩展组件{
parentComponentFunction(){
this.refs.parentComponent.someFunction();
}
render(){
}
}
选择3
不知道它是否存在
它有意义吗?或者您需要一个更好的示例吗?如果
某个函数
需要引用此
,则将其定义为成员函数。否则,将其作为单独的实用程序函数保留,或将其声明为类内的静态函数(选项3):
还有一个ESLint规则可以控制它:它对我有效(选项3)。我还将静态函数导出为:export const someFunction=MyComponent.someFunction;所以我可以使用类似这样的东西:import MyComponent,{someFunction}from./components/myAwesomeComponent';谢谢你的回答。你的问题太抽象了。请清楚地说明你正在努力实现的目标。通常,您永远不想“调用”组件方法。相反,使用道具将函数从一个组件传递到另一个组件。它是一个音乐播放器,someFunction()类似于播放、停止等等。。。我想用这个播放器创建一个组件,而不是组件包含自己的按钮,我想公开这些功能。我知道我作为道具的传递方式,但它只在父母和孩子之间起作用。。。我想要的是相反的,但我不知道这是否是一个好的做法。ThanksReact要求您以更具声明性的方式工作。您将使用
或
而不是MusicComponent.play()
。父母只给孩子传递道具。但是这些道具是可以改变的,正是通过改变道具,父母才能操纵他们的孩子。明白了。但这里的问题是因为Triton®声波风廓线仪没有组件,我必须导入其CDN,用户只需添加我的组件,一切正常,但可以自由地拥有自己的控件,如播放、停止等。我能做的是避免这个概念,用户必须将播放器(triton var)传递到我的组件中,我可以在那里使用它,用户仍然可以选择使用我的控件或他自己的控件。我对我的组件不是100%满意,但也不是太糟糕,因此我决定征求一些专家的意见。谢谢你的回复。