如何处理 React 0.12+ 中的组件引用变量和 props
How to deal with component reference variables and props in React 0.12+?
考虑这个朴素的路由机制:
componentDidUpdate(prevProps, prevState) {
if (window.location.pathname === '/login') {
this.setState({handler: <LoginScreen someProp="someValue"/>});
}
}
render() {
return <div>
{this.state.handler}
</div>;
}
目前为止,一切都好。但是如何在子组件上覆盖道具——或者更重要的是,设置一个引用呢?
cloneWithProps()
不再支持 ref
,并且不允许在 JSX 文件中使用createFactory()
。您也不允许在 JSX 中使用createElement
:
componentDidUpdate(prevProps, prevState) {
if (window.location.pathname === '/login') {
this.setState({handler: LoginScreen});
}
}
render() {
var handler = React.createElement(this.state.handler, {ref: "foo"});
return <div>{handler}</div>;
}
是否存在一些未记录的行为允许您在 JSX 文件中对组件类引用或此类实例执行某些操作?
你绝对可以在 JSX 文件中使用 createElement 和 createFactory。 唯一需要注意的是,<X/>
本质上是一个 createElement 运算符,所以就像你不能做<<X/>/>
你不能创建一个元素并将其传递给运算符一样。
你正在做的事情是完全没问题的。 只要您存储组件类或工厂,而不是元素(实例),就不会有任何问题。
在 0.12+ 中,JSX 区分了小写和大写组件名称,因此如果您想在 JSX 中使用动态组件,只需将其别名为 PascalCase 变量即可。
render() {
var Handler = this.state.handler;
return <div><Handler ref="foo" /></div>;
}
由于其他更改,处理程序可以是组件类或标记名称字符串,例如 'div'
.
相关文章:
- 对自定义组件中的本地访问引用进行反应
- 了解如何引用 react 组件中的属性
- 如何引用 OpenUI5 组件
- 如何处理 React 0.12+ 中的组件引用变量和 props
- 组件在 Angular 2 中如何相互引用
- React:新安装的子组件无法访问父组件引用
- 如何获取模型内部的组件引用保存回调函数
- 未呈现React引用子组件
- 如何为javascript组件引用HTML层
- 组件对话框无法在IE中运行(无法获取属性'clear'未定义或空引用)
- Angular 2的组件变量作用域和引用
- 从组件内部访问其他组件引用
- 组件引用错误
- 在React中引用组件外部的变量
- 如何引用文档.在React组件中工作
- 我如何引用连接(容器)组件's道具内mapStateToProps
- 如何从angular指令或组件中引用特定类型的子控制器
- 如何在初始设置后引用(子)Sencha Touch中的组件
- 如何获取父组件引用
- 将二进制组件引用到js-cypes