【问题标题】:"Parsing error: Argument expression expected. eslint" with Typescript map function in React“解析错误:需要参数表达式。eslint”与 React 中的 Typescript 映射函数
【发布时间】:2021-01-04 19:49:12
【问题描述】:

从这行代码

{inputFields.map(if => <Input inputField={if} /> )}

我在单词图上遇到了这个错误

Parsing error: Argument expression expected.eslint

inputFields 在表单中,在 div 中

<div>
    <form>
        {inputFields.map...}
    </form>
</div

输入字段是一个数组

inputFields: InputField[]

This answer 暗示这可能与打字稿版本有关。

在我的package.json 中,我知道我正在使用"typescript": "^3.8.3",但在右下角,我认为它是在说我使用的是4.0.2 版?

当我点击那个号码时,我可以将号码更改为3.9.7,但这不会改变错误


我看到的其他答案与我使用地图功能的用例无关

【问题讨论】:

    标签: reactjs typescript eslint


    【解决方案1】:

    if 是 Javascript 中的关键字。尝试重命名您的变量:

    {inputFields.map(field => <Input inputField={field} /> )}
    

    语句与表达式

    表达式是解析为值的代码

    const add = (a, b) => a + b
    add(10, 20) // => 30 
    'Hello' // => 'Hello'
    

    语句是使某事发生的代码

    if (x < 10) // doesn't resolve
    break // doesn't resolve
    switch // doesn't resolve
    

    因此警告:““Parsing error: Argument expression expected.eslint”告诉你一个表达式(解析为一个值的东西)是预期的,但是你传递了一个语句(它不能被解析为一个值)

    您不能将语句分配给变量,只能分配表达式。

    【讨论】:

    • 是的,做到了,抱歉,只是没有提示。我会接受你的回答,但我告诉我必须等待 5 分钟
    • 别担心。 “Parsing error: Argument expression expected.eslint”警告现在有意义吗?
    • 不,这对我来说仍然是行话。是不是说 map 函数需要一个参数,但我传递了一个 if 语句,这不算作参数?
    • 您说的非常对,我已经更新了答案,应该可以解决您的困惑。
    • 谢谢,额外的解释有帮助
    【解决方案2】:

    您不能使用带有关键字的变量,例如 if 或 var 作为 js 中的变量,因此您需要重命名变量的名称,因为它应该可以工作

    {inputFields.map((data)=> <Input inputField={data} /> )}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-26
      • 2020-11-30
      • 2020-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多