我是reactjs的新手,我正尝试使用三元运算符根据条件渲染jsx,但会引发错误:Line 22: Expected an assignment or function call and instead saw an expression no-unused-expressions
这是代码:

const posts = this.state.posts.length > 0 ?
            this.state.posts.map(elem=>{
                <div class="col s12 m7">
                    <h2 class="header">{elem.title}</h2>
                    <div class="card horizontal">
                        <div class="card-stacked">
                            <div class="card-content">
                                <p>{elem.body}</p>
                            </div>
                            <div class="card-action">
                                <a href="#">This is a link</a>
                            </div>
                        </div>
                    </div>
                </div>
            })
            :null;


我尝试在圆括号this.state.posts.length > 0中包含( )为true的第一个返回值,但效果不好。
提前致谢。

最佳答案

您需要从传递给map方法的函数中返回jsx。

在传递给return方法的函数内使用map

const posts =
  this.state.posts.length > 0
    ? this.state.posts.map(elem => {
        return (
          <div className="col s12 m7">
            <h2 className="header">{elem.title}</h2>
            <div className="card horizontal">
              <div className="card-stacked">
                <div className="card-content">
                  <p>{elem.body}</p>
                </div>
                <div className="card-action">
                  <a href="#">This is a link</a>
                </div>
              </div>
            </div>
          </div>
        );
      })
    : null;


您也可以将()用于隐式return

const posts =
  this.state.posts.length > 0
    ? this.state.posts.map(elem => (
        <div className="col s12 m7">
          <h2 className="header">{elem.title}</h2>
          <div className="card horizontal">
            <div className="card-stacked">
              <div className="card-content">
                <p>{elem.body}</p>
              </div>
              <div className="card-action">
                <a href="#">This is a link</a>
              </div>
            </div>
          </div>
        </div>
      ))
    : null;


还将jsx中的className用于class

关于javascript - 通过三元运算符映射的数组分配失败?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56716987/

10-11 02:31