[英]how to use if else condition in jsx?
class Wrapper extends React.Component { content() { if (this.props.isLoading) { return ( <Layout> <Loader /> </Layout> ); } else if (this.props.isError) { return ( <Layout> <Error errorMsg={this.props.error} /> </Layout> ); } else { return ( <Layout> {this.props.isSuccess ? <h1>success</h1> : <h1>some failure</h1>} </Layout> ); } } render() { return this.content(); } } export default Wrapper;
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
i have the above code , here i am using layout in every condition , actual <Layout>
component is really heavy , so i want to use layout only once and trying to rewrite the code something like the below code. 我有上面的代码,在这里我在每种情况下都使用layout,实际的
<Layout>
组件真的很重,所以我只想使用一次layout并尝试重写下面的代码。 but its not rendering anything except layout. 但除了布局之外,它不会渲染任何内容。
class Wrapper extends React.Component { content() { return ( <Layout> {(()=>{ if (this.props.isLoading) { <Loader /> }else if(this.props.isError){ <Error errorMsg={this.props.error} /> }else if(this.props.isSuccess){ <h1>success</h1> } })()} </Layout> ); } render() { return this.content(); } } export default Wrapper;
How about something like this? 这样的事情怎么样?
class Wrapper extends React.Component {
render() {
return (
<Layout>
{this.props.loading &&
<Loader />
}
{this.props.error &&
<Error errorMsg={this.props.error} />
}
{this.props.succes &&
<h1>success</h1>
}
</Layout>
);
}
}
export default Wrapper;
Because you forgot to return the elements, by default function returns undefined. 因为您忘记返回元素,所以默认情况下函数返回未定义。 You defined a iife that will not return the result automatically, you need to do that.
您定义了一个不会自动返回结果的Iife ,您需要这样做。
Write it like this: 像这样写:
{(()=>{
if (this.props.isLoading) {
return <Loader />
}else if(this.props.isError){
return <Error errorMsg={this.props.error} />
}else if(this.props.isSuccess){
return <h1>success</h1>
}
})()}
Consider this example to make the picture more clear, in this case renderElement
function will return undefined, and nothing will get rendered. 请考虑以下示例,以使图片更清晰,在这种情况下,
renderElement
函数将返回undefined,并且不会渲染任何内容。
render(){
return (
<div>
{this.renderElement()}
</div>
)
}
// it will not return anything
renderElement(){
if (this.props.isLoading) {
<Loader />
}else if(this.props.isError){
<Error errorMsg={this.props.error} />
}else if(this.props.isSuccess){
<h1>success</h1>
}
}
class Wrapper extends React.Component {
render() {
let content, message;
this.props.error ? message = <Error errorMsg={this.props.error}> : null
this.props.success ? message = <h1>success</h1> : null
this.props.isLoading ? content = <Loader/> : content = message
return (
<Layout>
{content}
</Layout>
)}
}
export default Wrapper;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.