3

我有这样的代码,但出现错误:-

<FieldArray
        name="amenities"
        render={arrayHelpers => (
          <div>
            {values.amenitieslist && values.amenitieslist.length > 0 ? (
              values.amenitieslist.map((amenity, index) => (
                <div key={index}>
                  <Field name={`amenitieslist.${index}.name`} />
                  <button
                    type="button"
                    onClick={() => arrayHelpers.remove(index)} // remove a friend from the list
                  >
                    -
                  </button>
                </div>
              ))
            ) : (
              <button type="button" onClick={() => arrayHelpers.push({ id: "", name: "" })}>
                {/* show this when user has removed all friends from the list */}
                Add a friend
              </button>
            )}
            <div>
              <button type="submit">Submit</button>
            </div>
          </div>
        )}
      />

如果我这样做,我会收到一个错误,由于它们的渲染性能影响,JSX 属性中禁止使用 Lambda。

如果我尝试使用这样的另一种方法:-

const displayAmenities = (values, arrayHelper)=>{
}

我收到一个错误,即“值”隐含地具有“任何”类型。

我该如何解决这个问题??我不应该更改有关 lambda 表达式的任何规则。有没有这样做的合法方法。

4

2 回答 2

2

为了在我的 Typescript React 项目中快速解决这个问题(因为我今天要部署一些东西来交付),我只是编辑了名为 tslint.json 的文件,并包含了一个新规则:“jsx-no-lambda”:false。

tslint.json 文件摘录在这里:

  ...
  "rules": {
    "jsx-no-lambda": false,
    ...
  }
  ...

希望对大家有帮助,我花了一些时间才弄到的。

于 2020-06-25T00:20:20.890 回答
1

'values' 隐含了一个 'any' 类型

此错误仅意味着 TypeScript 无法自行确定参数的类型values。最简单的解决方法是像这样指定类型:

const displayAmenities = (values: SomeType[], arrayHelper: SomeOtherType)=>{
    // ...
}

因为我也不知道这些变量的类型,所以我不能确切地告诉你要使用什么。只需将SomeType和替换SomeOtherType为您项目中的类型。

于 2019-09-09T14:28:42.927 回答