由于HOC被假设用作mixins,可能与其他HOC一起使用,是否最好注入上下文虽然详细的prop名称(例如,以HOC的名称为前缀)?
我认为这应该被视为应该是最佳实践的问题。
因此,例如,对于注入类似窗口的行为的这个HOC更好:
简短的非上下文命名
@window
@otherMixin
class BasicView extends React.Component {
render() {
const {close, open} = this.props; //these are provided by @window
}
}
VS 上下文命名(带前缀)
@window
@otherMixin
class BasicView extends React.Component {
render() {
const {windowClose, windowOpen} = this.props //these are provided by @window
}
}
或 内容相关命名(嵌套)
@window
@otherMixin
class BasicView extends React.Component {
render() {
const {window} = this.props; //provided by @window
window.open();
window.close();
/* optionally we can destructure and work with the shorter
* non-contextually named props while still maintaining
* a declaration of their context to disambiguate
*/
//const {window: {open, close} } = this.props;
}
}
答案 0 :(得分:2)
通常,库设计者为此提供react context和a hoc以订阅上下文对象。您可能需要使用上下文。但是,大多数图书馆设计师都受到上下文命名(嵌套)"因为那是上下文如何运作的。
这个问题实际上只是个人意见的问题,但如果你想要遵循其他图书馆的模式,你应该选择什么。
最后一点,我强烈建议不要出于明显的原因而不提供名为window
的变量。