【发布时间】:2015-10-08 17:46:21
【问题描述】:
在开发我的第一个大型 React 应用程序时,我开始对嵌套组件的紧密耦合感到不安,尤其是在编写单元测试时。
如果是高级组件,它的渲染函数返回<div><Bar><Baz /></Bar></div>,我希望能够单独测试Foo、Bar和Baz。
我搜索了建议,但没有找到任何建议。所以,我自己想出了两种注入方法:工厂函数和通过外部组件的属性。 (我说的不是儿童。我说的是“内置”依赖项——人们通常通过 require 或 import 语句导入的那种。
属性
const Baz = React.createClass({
render() {
return <p>Inner</p>;
}
});
const Foo = React.createClass({
render() {
const Bar = this.props.innerComponent;
return <Bar />;
}
});
ReactDOM.render(
<Foo innerComponent={Baz} />,
document.getElementById('container')
);
工厂
const Baz = React.createClass({
render() {
return <p>Inner</p>;
}
});
const fooFactory = innerComponent => {
return React.createClass({
render() {
const Bar = innerComponent;
return <Bar />;
}
});
};
const Foo = fooFactory(Baz);
ReactDOM.render(
<Foo innerComponent={Baz} />,
document.getElementById('container')
);
还是我只是把脱钩做得太过分了?在任何教程或示例中,我几乎没有看到其他人这样做。
您是否会倾向于有时注入组件,但有时不会?在什么情况下?而且,如果你这样做了,你会使用上述技术之一还是以其他方式进行?
【问题讨论】:
标签: javascript dependency-injection reactjs