reactjs 如何解决错误:无法为对象“SyntaxError?React”的只读属性“message”赋值

nc1teljy  于 2023-01-30  发布在  React
关注(0)|答案(2)|浏览(241)

我试着在codesandbox中写一个代码,但是它有一个错误。我必须通过三进制做一个检查。

TypeError
Cannot assign to read only property 'message' of object 'SyntaxError: /src/components/SearchResults.js: Unexpected token (8:10)

   6 |       {filteredProducts().map((product) => {
   7 |         filteredProducts().length > 0 (
>  8 |           return (
     |           ^
   9 |             <div key={product.id}>
  10 |               <li>{product.title}</li>
  11 |             </div>'

为了解决这个问题,我使用了带?和的三进制:我做错什么了吗?会是什么?有人能帮我吗?

组件出错

import React from "react";
const SearchResults = ({ filteredProducts }) => {
  return (
    <div>
      {filteredProducts().map((product) => {
        filteredProducts().length > 0 (
          return (
            <div key={product.id}>
              <li>{product.title}</li>
            </div>
          )
        ) : (
          return(
            <p>Item not found</p>
          )
        )
      })}
    </div>
  );
};

export default SearchResults;

Codesanbox

wkyowqbh

wkyowqbh1#

你应该像这样检查map语句前面的长度:

import React from "react"

const SearchResults = ({ filteredProducts }) => {
  return (
    <div>
      {filteredProducts.length > 0 ? (
        filteredProducts().map((product) => (
          <div key={product.id}>
            <li>{product.title}</li>
          </div>
        ))
      ) : (
        <p>Item not found</p>
      )}
    </div>
  )
}

export default SearchResults
eimct9ow

eimct9ow2#

(expression)中不能有return,因为它不是函数
另外,三元语法中有“?”,如下所示

expressionIfTrue ? (take this) : (If exp not true take this)

import React from "react";
const SearchResults = ({ filteredProducts }) => {
  return (
    <div>
      {filteredProducts().map((product) => {
        filteredProducts().length > 0 ? (
          <div key={product.id}>
            <li>{product.title}</li>
          </div>
        ) : (
          <p>Item not found</p>
        );
      })}
    </div>
  );
};

export default SearchResults;

相关问题