如何有条件地渲染两个组件?
How to Render Two Components Conditionally?
如何有条件地渲染这两个组件?
import React, { Component } from 'react';
import { Container, Header, Content, Card, CardItem, Text, Body } from 'native-base';
export default class CardHeaderFooterExample extends Component {
render() {
return (
<Card>
<CardItem header>
<Text>NativeBase</Text>
</CardItem>
<CardItem>
<Body>
<Text>
//Your text here
</Text>
</Body>
</CardItem>
<CardItem footer>
<Text>GeekyAnts</Text>
</CardItem>
</Card>
让我们说:
if logedin={true}
return
<Card>
<CardItem header>
<Text>NativeBase</Text>
</CardItem>
<CardItem>
<Body>
<Text>
//Your text here
</Text>
</Body>
</CardItem>
<CardItem footer>
<Text>GeekyAnts</Text>
</CardItem>
</Card>
else return
<Text> signup to access this content </Text>
这种情况如何做这个条件渲染?这些组件应该基于布尔值 logedin
.
来渲染
我觉得你需要的是
return logedin==true ? (
<Card>
<CardItem header>
<Text>NativeBase</Text>
</CardItem>
<CardItem>
<Body>
<Text>
//Your text here
</Text>
</Body>
</CardItem>
<CardItem footer>
<Text>GeekyAnts</Text>
</CardItem>
</Card>
) : (
<Text> signup to access this content </Text>
)
记得更改为 this.props.logedin
或 this.state.logedin
如果它们属于 props 或 state。
这也是可以的:
return (
{ logedin && <YourComponentWhenLogedinIsTrue/> }
{ ! logedin && <YourComponentWhenLogedinIsFalse/> }
);
您可以参考以下内容实现:
render() {
var1 =
<Card>
<CardItem header>
<Text>NativeBase</Text>
</CardItem>
<CardItem>
<Body>
<Text>
//Your text here
</Text>
</Body>
</CardItem>
<CardItem footer>
<Text>GeekyAnts</Text>
</CardItem>
</Card>
var2 = <Text> signup to access this content </Text>
return(
<View>
{logedin == true
? var1
: var2
}
</View>
);
}
您可以通过多种方式实现这一目标。
使用多个returns
render()
{
if(!logedin){
return <Text> Signup to access this content </Text>;
}
return( <CardComponent/> );
}
使用三元运算符
condition ? statement to execute if condition is true : statement to execute if condition is false
render()
{
return islogedin ? <CardComponent/> : <Text> Signup to access this content </Text>;
}
如何有条件地渲染这两个组件?
import React, { Component } from 'react';
import { Container, Header, Content, Card, CardItem, Text, Body } from 'native-base';
export default class CardHeaderFooterExample extends Component {
render() {
return (
<Card>
<CardItem header>
<Text>NativeBase</Text>
</CardItem>
<CardItem>
<Body>
<Text>
//Your text here
</Text>
</Body>
</CardItem>
<CardItem footer>
<Text>GeekyAnts</Text>
</CardItem>
</Card>
让我们说:
if logedin={true}
return
<Card>
<CardItem header>
<Text>NativeBase</Text>
</CardItem>
<CardItem>
<Body>
<Text>
//Your text here
</Text>
</Body>
</CardItem>
<CardItem footer>
<Text>GeekyAnts</Text>
</CardItem>
</Card>
else return
<Text> signup to access this content </Text>
这种情况如何做这个条件渲染?这些组件应该基于布尔值 logedin
.
我觉得你需要的是
return logedin==true ? (
<Card>
<CardItem header>
<Text>NativeBase</Text>
</CardItem>
<CardItem>
<Body>
<Text>
//Your text here
</Text>
</Body>
</CardItem>
<CardItem footer>
<Text>GeekyAnts</Text>
</CardItem>
</Card>
) : (
<Text> signup to access this content </Text>
)
记得更改为 this.props.logedin
或 this.state.logedin
如果它们属于 props 或 state。
这也是可以的:
return (
{ logedin && <YourComponentWhenLogedinIsTrue/> }
{ ! logedin && <YourComponentWhenLogedinIsFalse/> }
);
您可以参考以下内容实现:
render() {
var1 =
<Card>
<CardItem header>
<Text>NativeBase</Text>
</CardItem>
<CardItem>
<Body>
<Text>
//Your text here
</Text>
</Body>
</CardItem>
<CardItem footer>
<Text>GeekyAnts</Text>
</CardItem>
</Card>
var2 = <Text> signup to access this content </Text>
return(
<View>
{logedin == true
? var1
: var2
}
</View>
);
}
您可以通过多种方式实现这一目标。
使用多个returns
render() { if(!logedin){ return <Text> Signup to access this content </Text>; } return( <CardComponent/> ); }
使用三元运算符
condition ? statement to execute if condition is true : statement to execute if condition is false
render()
{
return islogedin ? <CardComponent/> : <Text> Signup to access this content </Text>;
}