在 React 中渲染一个组件中的另一个组件
Render a component within another in React
当状态发生变化时,React 会触发componentDidUpdate()
方法,到那时我这样做:
componentDidUpdate: function () {
React.render(new SubmitButton, $('.uploader-submit').get(0));
}
如您所见,当特定状态更改时,我正在渲染SubmitButton
,但我的问题是:这是完成此功能的最佳行为吗?
我的场景是:我正在上传照片。更改input[type=file]
时,我创建一个新的状态属性,然后触发componentDidUpdate()
,调用 SubmitButton。
这是我render()
方法:
render: function () {
return (
<div className="uploader">
<header className="uploader-header">
<div className="uploader-actions pull-left">
<div className="uploader-submit"></div>
<CancelButton router={this.props.router} />
</div>
<UploadButton callback={this.imageSelectedCallback} />
</header>
<Preview imageUri={this.state.imageUri} />
</div>
)
}
我不能做类似<Preview />
组件的事情吗?我的意思是,它就在那里,但是当this.state.imageUri
与null
不同时,就会出现一些东西.这是Preview
的实现:
var Preview = {
render: function () {
return (
<img src={this.props.imageUri} />
)
}
};
module.exports = React.createClass(Preview);
是的,我知道 - 默认情况下"预览"是不可见的,因为它是图像,但我想知道是否有另一种方法可以达到我想要的:使用 render
方法根据状态显示某些内容。
React 不会渲染虚假值,无论是组件还是属性(如Preview
情况),例如
<div>{null}</div>
<img src={null} />
渲染到
<div></div>
<img/>
因此,通常您只需创建一个变量并有条件地为其分配一个组件或 null,正如另一个答案中建议的那样:
var button = null;
if(myConditionForShowingButton) {
button = <SubmitButton />;
}
——或者干脆——
var button = myConditionForShowingButton ?
<SubmitButton /> :
null;
在组件变大的情况下,通常有一个子例程来渲染该部分更具可读性和更清晰
var complexComponent = condition ?
this.renderComplexComponent() :
null
是的。If-else in JSX.
render: function () {
var submitButton;
if (this.state.imageSelected)
submitButton = <SubmitButton />;
return (
<div className="uploader">
<header className="uploader-header">
<div className="uploader-actions pull-left">
<div className="uploader-submit">{ submitButton }</div>
<CancelButton router={this.props.router} />
</div>
<UploadButton callback={this.imageSelectedCallback} />
</header>
<Preview imageUri={this.state.imageUri} />
</div>
)
}
相关文章:
- 如何在react js中将值从一个组件发送到另一个组件
- 我的shareService在angular 2中发送值工作正常,但当我渲染我的另一个组件时,会获得默认值
- 聚合物是一个框架而不是一个库.如何模块化地使用web组件
- Angular2将组件方法导入到另一个组件中
- 有没有一个Nodejs库可以序列化和反序列化命名组件的路径(比如URL路径名)
- 如何向onClick事件处理程序传递一个接受参数的函数,并且仍然将该函数绑定到组件's”;这个“;上下文
- 如何在另一个组件中获取指令/组件实例
- Vue.js获取组件中的一个元素
- 制作一个高阶组件,用TypeScript实现反应中继和反应路由器的交互操作
- reactjs-redux,是否可以有一个由2个组件使用的状态
- 无法将react组件作为属性传递给另一个组件
- 在React中将方法从一个组件移动到另一个组件,并且仍然可以在原始组件中使用
- Angular 2,在没有直接关系的两个组件之间共享一个对象
- 在另一个文件夹中显示React组件
- 有没有一条清晰的路径,我可以实现一个在 ScalaJS + React 中广泛使用上下文的 React 组件
- 如何从一个组件访问另一个组件的状态
- 如何创建一个组件,我可以设置在 Angular 2 中的属性中获取 URL 数据
- 是否有一个 API 来控制火狐附加组件 SDK 中的下载
- Vue.js从另一个组件获取数据
- bind():您正在将一个组件方法绑定到该组件.React会自动为您执行此操作