Javascript React中的条件呈现;这是路吗?

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() {

我只是查看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() {
    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在使用方面非常灵活:。谢谢你的澄清