2016-12-26 35 views
1

我有一个函数:传播操作错误,打字稿

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; | exports [“default”] = PopUpInfoWindowExample; |返回标记;

但是,当我删除'...'接近'标记'我的功能是不正确的工作。

我这样做:

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

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

+0

'marker'是一个字符串吗? – guest271314

+0

marker是数组元素(标记) - 它的反应谷歌地图https://tomchentw.github.io/react-google-maps/basics/pop-up-window –

+0

是'targetMarker'数组? 'marker === targetMarker'和'... marker'的预期结果是什么? – guest271314

回答

0

如果是一个对象,那么可以使用Object.spread来代替使用传播运算符。下面是一个例子:

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