react组件后缀是用js还是jsx

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了react组件后缀是用js还是jsx相关的知识,希望对你有一定的参考价值。

参考技术A js是文件格式,用js

在 React 中,如何将 JSX 与返回更多 JSX 的 JS 函数一起返回?

【中文标题】在 React 中,如何将 JSX 与返回更多 JSX 的 JS 函数一起返回?【英文标题】:In React, How to Return JSX together with JS Function that returns more JSX? 【发布时间】:2019-03-16 23:07:38 【问题描述】:

在渲染选择字段的 React 组件中,选项由组件函数 renderOptions() 动态创建,我们如何还渲染一个空的 option 元素(例如:<option value=""></option>)作为第一个选项?

在添加空的<option>之前反应代码

renderOptions() 
    return (
        this.props.users.map(user => (
            <option key= user._id  value= user._id > user.name </option>
        ))
    )



render() 
    return (
        <div>
            <div className="someDiv"></div>

            <select>
                 this.props.usersAreLoading 
                    ? <option value="">Loading...</option> 
                    : this.renderOptions()
                            
            </select>
        </div>
    )

尝试失败

render() 
    return (
        <div>
            <div className="someDiv"></div>

            <select>
                 this.props.usersAreLoading 
                    ? <option value="">Loading...</option> 
                    : <option value=""></option> this.renderOptions()
                            
            </select>
        </div>
    )

【问题讨论】:

【参考方案1】:

试试这个

 <select>
         this.props.usersAreLoading 
                && <option value="">Loading...</option> 
        !this.props.usersAreLoading && <option value=""></option> 
        !this.props.usersAreLoading && this.renderOptions()           
   </select>

【讨论】:

【参考方案2】:

你必须单独渲染它:

!this.props.usersAreLoading && <option value=""></option>

this.props.usersAreLoading 
  ? <option value="">Loading...</option> 
  : this.renderOptions()
 

【讨论】:

【参考方案3】:

最简单的方法(也许不是最优雅的)是使用两个条件

        <select>
             this.props.usersAreLoading 
                ? <option value="">Loading...</option> 
                : <option value=""></option>
             
           !this.props.usersAreLoading && this.renderOptions()
       

        </select>

【讨论】:

【参考方案4】:

由于三元 'else' 应该包含多个元素,它们可以用 React.Fragment 包裹:

this.props.usersAreLoading ? (
  <option value="">Loading...</option>
) : (
  <>
    <option value=""></option>
    this.renderOptions()
  </>
)

或作为单个数组提供:

this.props.usersAreLoading ? (
  <option value="">Loading...</option>
) : [
  <option value=""></option>,
  this.renderOptions()
]

【讨论】:

【参考方案5】:

使用 Fragment 包装选项组件

<select>
          this.props.usersAreLoading ? (
            <option value="">Loading...</option>
          ) : (
            <Fragment>
                <option value=""/>
              this.renderOptions()
            </Fragment>
          )
          ) 
 </select>

【讨论】:

以上是关于react组件后缀是用js还是jsx的主要内容,如果未能解决你的问题,请参考以下文章

在 React.js 中有条件地设置 html 属性

用react做项目时弹窗是用hidden控制显示隐藏的方法还是用组件,组件都有哪些呢

react和vue区别

前端知识点回顾——Reactjs

当多个 React DOM 组件在没有外部 div 的情况下使用时,JSX 将无法编译

React拆分组件的最佳实践?