Назначение сопоставленного массива через тернарный оператор не удается? - PullRequest
1 голос
/ 22 июня 2019

Я новичок в Reactionjs и пытаюсь отобразить 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 истинно, в скобках ( ), но безрезультатно.Заранее спасибо.

1 Ответ

1 голос
/ 22 июня 2019

Вам необходимо вернуть jsx из функции, переданной методу map.

Используйте 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;

Также используйте className для class внутри jsx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...