Javascript React中的条件呈现;这是路吗?
我只是查看React,将其与我的go to framework Vue进行比较,并尝试有条件地渲染一个按钮。当我研究如何做到这一点时,我做了如下:Javascript React中的条件呈现;这是路吗?,javascript,reactjs,Javascript,Reactjs,我只是查看React,将其与我的go to framework Vue进行比较,并尝试有条件地渲染一个按钮。当我研究如何做到这一点时,我做了如下: import React from 'react' export default class LikeButton extends React.Component { constructor(props) { super(props) this.state = { likes: 0 } } render() {
import React from 'react'
export default class LikeButton extends React.Component {
constructor(props) {
super(props)
this.state = { likes: 0 }
}
render() {
return (
<div>
<button onClick={this.increment}>
Likes: {this.state.likes}
</button>
{
this.state.likes > 0 ? (
<button onClick={this.reset}>
Unlike
</button>
) : ('')
}
</div>
)
}
increment = () => this.setState({ likes: this.state.likes + 1 })
reset = () => this.setState({ likes: 0 })
}
真的是这样吗?我觉得语法非常难看,至少与Vue的v-if和v-show指令相比。或者有更好的方法以干净的方式实现这一点吗?您可以使用&&而不是条件运算符使条件渲染看起来更好一些: 类应用程序扩展了React.Component{ 构造器{ 超级作物 this.state={likes:0} } 渲染{ 回来 喜欢:{this.state.Likes} { this.state.likes>0&& 不像 } } increment=>this.setState{likes:this.state.likes+1} 重置==>this.setState{likes:0} } ReactDOM.render,document.querySelector'.react';
通过使用&&而不是条件运算符,可以使条件渲染看起来更好一些: 类应用程序扩展了React.Component{ 构造器{ 超级作物 this.state={likes:0} } 渲染{ 回来 喜欢:{this.state.Likes} { this.state.likes>0&& 不像 } } increment=>this.setState{likes:this.state.likes+1} 重置==>this.setState{likes:0} } ReactDOM.render,document.querySelector'.react';
大多数情况下是的。不过,您可以简化语句,您可以使用逻辑&&而不是三元运算符?如果您希望仅在条件中显示数据,而在其他条件中不显示数据 this.state.likes>0&&
与不同,大多数情况下是的。不过,您可以简化语句,您可以使用逻辑&&而不是三元运算符?如果您希望仅在条件中显示数据,而在其他条件中不显示数据 this.state.likes>0&&
与内联渲染不同,您可以
{
this.state.likes > 0 &&
<button onClick={this.reset}>Unlike</button>;
}
或者在渲染函数中
let like = null;
if (this.state.likes > 0) {
like = <LogoutButton onClick={this.handleLogoutClick} />;
}
然后
<div>
<button onClick={this.increment}>Likes: {this.state.likes}</button>
{like}
</div>;
我个人更喜欢第二种,但这取决于你
有关内联渲染的详细信息,请参见
{
this.state.likes > 0 &&
<button onClick={this.reset}>Unlike</button>;
}
或者在渲染函数中
let like = null;
if (this.state.likes > 0) {
like = <LogoutButton onClick={this.handleLogoutClick} />;
}
然后
<div>
<button onClick={this.increment}>Likes: {this.state.likes}</button>
{like}
</div>;
我个人更喜欢第二种,但这取决于你
更多信息当您开始将代码拆分为函数时,react的主要优点就来了。因此,您可以使用一个名为renderButton的函数,让它决定渲染什么
renderButton = () => {
// all code logic here
if(this.state.likes > 0){
return (<button>Unlike</button>)
}
return (<></>)
}
然后在render函数中,您可以只{this.renderButton}
您还可以执行条件&语句
您还可以阅读纯组件的相关内容,纯组件只包含UI,逻辑写在其他组件中。在react中有许多方法可以编写漂亮、干净的代码
主要问题是react很容易启动,因此许多新开发人员将开始编写难以阅读的代码
另外,我忘了提到挂钩,挂钩使编写react更简洁、更容易。react的主要优点是当您开始将代码拆分为函数时。因此,您可以使用一个名为renderButton的函数,让它决定渲染什么
renderButton = () => {
// all code logic here
if(this.state.likes > 0){
return (<button>Unlike</button>)
}
return (<></>)
}
然后在render函数中,您可以只{this.renderButton}
您还可以执行条件&语句
您还可以阅读纯组件的相关内容,纯组件只包含UI,逻辑写在其他组件中。在react中有许多方法可以编写漂亮、干净的代码
主要问题是react很容易启动,因此许多新开发人员将开始编写难以阅读的代码
此外,我还忘了提到挂钩,它使书写反应更干净、更容易。非常酷!我看到React在使用方面非常灵活:。谢谢你的澄清非常酷!我看到React在使用方面非常灵活:。谢谢你的澄清