2016-12-26 74 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);