javascript - 在 React 中,如何将 JSX 与返回更多 JSX 的 JS 函数一起返回?
问题描述
在渲染选择字段的 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>
)
}
解决方案
由于三元 '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()
]}
推荐阅读
- amazon-web-services - 运行 1 小时后 ODBC/JDBC 连接中止?
- c++ - 尝试在 VS2015 中包含仅标头库(tiny-dnn)时出现编译错误
- angular - Angular 5 polyfill async/await 是否适用于 IE11
- android-9.0-pie - env(safe-area-inset-top) 在 Android Pie + WebView 69 上不起作用
- mysql - MYSQL 从组中获取总数
- apostrophe-cms - TypeError:无法读取未定义的属性“位图”(ApostropheCMS)
- xamarin.forms - 在 xamarin 表单中异步加载数据的正确方法
- c++ - c++中0-x和-x的区别
- apache-kafka - 卡夫卡流:java.nio.file.DirectoryNotEmptyException
- java - 在 Intellij 和 Kotlin 中找不到 Log4j2 配置