【问题标题】:Expected an assignment or function call and instead saw an expression error期望赋值或函数调用,但看到表达式错误
【发布时间】:2018-04-18 13:45:35
【问题描述】:

我编写的一些代码有一点问题,我不断收到错误:

期待一个赋值或函数调用,却看到了一个表达式

我已经评论了错误发生的地方。但是不确定问题是什么。代码如下:

renderBody() {
    const { bookings } = this.props;
    if (bookings.length > 0) {
        return (
            Object.keys(bookings).map(e => (
                <TableBody>
                    {Object.values(bookings[e]).forEach((value) => {
                        <TableCell>{value}</TableCell>; //<-ERROR??
                    })}
                </TableBody>
            ))
        );
    }
    return null;
}

【问题讨论】:

  • 您是否在应该使用括号隐式返回的地方使用卷曲?
  • 请用minimal reproducible example 更新您的问题来证明问题,最好是使用堆栈片段([&lt;&gt;] 工具栏按钮)可运行。 Stack Snippets 支持 React,包括 JSX; here's how to do one.
  • 可能不支持解构赋值?尝试删除const {bookings}

标签: javascript reactjs


【解决方案1】:

因为你没有在forEach 中做任何事情(没有赋值,没有计算),而且forEach 也不会返回任何东西,使用map 来返回每个数组条目的TableCell。

Eslint 会抛出一个错误,如果你写一个forEach 循环而不做任何操作。

这样写:

{Object.values(bookings[e]).map(value => (
    <TableCell>{value}</TableCell>
))}

【讨论】:

  • 虽然这是真的,但我不清楚这会导致 OP 报告的错误。
  • @T.J.Crowder,我认为,它是一个 linting 错误期望一个赋值或函数调用,而是看到一个表达式
  • @MayankShukla 代码 sn-p 导致解析错误。查看对原始问题的更新评论
  • @MubeenHussain 因为你忘了关闭(,这里:)} &lt;/TableBody&gt;,使用这个:))} &lt;/TableBody&gt; 在嵌套映射中关闭大括号。
【解决方案2】:

你只是错过了一个结束)

 Object.values(bookings[e]).map(value => (
            <TableCell>{value}</TableCell>
  ))} // <--

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-03
    • 2020-03-21
    • 2011-05-09
    • 1970-01-01
    • 2020-11-16
    • 2020-12-28
    • 2015-05-22
    • 2017-09-09
    相关资源
    最近更新 更多