【问题标题】:Spread operator error on react and typescript在反应和打字稿上传播运算符错误
【发布时间】:2016-12-26 01:21:19
【问题描述】:

我有一个函数:

handleMarkerClick(targetMarker) {
    this.setState({
        markers: this.state.markers.map(marker => {
            if (marker === targetMarker) {
                return {
                    ...marker, //  error TS1136: Property assignment expected.

                    showInfo: true, // error TS1005: ',' expected.
                }; // error TS1135: Argument expression expected, error TS1005: ')' expected.
            }
            return marker; //  error TS1068: Unexpected token. A constructor, method, accessor, or property was expected.
        }), // Declaration or statement expected.
    });
}

我看到很多错误:

  • 需要属性分配。
  • ',' 预期。
  • 需要参数表达式。
  • 您可能需要适当的加载程序来处理此文件类型。 |出口.__esModule = true; |出口[“默认”] = PopUpInfoWindowExample; |返回标记;

但是当我删除“标记”附近的“...”时,我的功能无法正常工作。

我这样做:

    handleMarkerClick(targetMarker) {
    this.setState({
        markers: this.state.markers.map(marker => {
            if (marker === targetMarker) {
                return {
                    marker, // delete ...
                    showInfo: true,
                };
            }
            return marker;
        }),
    });
}

为什么?我能做些什么来获得正确的功能?

【问题讨论】:

  • marker 是字符串吗?
  • marker 是数组(标记)的一个元素 - 它是 react-google-maps tomchentw.github.io/react-google-maps/basics/pop-up-window
  • targetMarker 是一个数组吗? marker === targetMarker...marker 的预期结果是什么?
  • 您能否向我们展示您收到的每个错误的行号(以及您帖子中的相应行)?
  • targetMarker 是一个目标标记(一个)。 marker === targetMarker - 是一个检查标记数组的可点击标记的函数。

标签: javascript reactjs typescript


【解决方案1】:

如果marker 是一个对象,那么您可以尝试使用Object.assign(),而不是使用扩展运算符。这是一个例子:

marker = Object.assign({}, marker);

【讨论】:

    猜你喜欢
    • 2016-03-14
    • 2018-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 2016-02-25
    相关资源
    最近更新 更多