Ali*_*adi 3 javascript design-patterns reactjs
我已经构建了自己的FormBuilder组件(5k现在几乎是一行),因此它可以满足我的所有需求,我遇到的一个问题是FormData在用户需要的任何时间加载一组新组件,因为我FormBuilder可以接受一组嵌套组件,比较这些更改有点困难,并且处理组件中的所有内容确实挂载了,一个简单的方法是在组件loadFormData内部构建一个方法FormBuilder并从组件外部调用此方法
我知道这可以很容易地使用ref attribute,但反应强烈建议避免这种情况,我得到了灰心!我不确定我是否应该这样做!
所以我想出了一个新的替代方案,它有点做同样的事情:
class A {
onGetFormBuilderInternalFunction = (functions) => {
this.formBuilderFunctions = functions
}
onLoadButtonClick = () => {
this.formBuilderFunctions.loadFormData(someNewData)
}
render () {
<FormBuilder onGetInternalFunction={this.onGetFormBuilderInternalFunction}
}
}
class FormBuilder {
componentDidMount() {
if (this.props.onGetInternalFunction) {
this.props.onGetInternalFunction({
loadFormData: this.loadFormData,
})
}
}
}
Run Code Online (Sandbox Code Playgroud)
那么你怎么看?,这是更好的方法吗?还是这仍然很糟糕?,我在想使用这种方法至少只能访问我需要的功能,而不能访问其他所有功能。
我还应该提到,loadFormData这只是一个例子,至少有几个special function我真的认为最好从外部调用,所以即使我以某种方式从 props 传递新数据并处理它componentDidUpdate,对于其余的这些功能,我仍然需要访问FormBuilder