リーフレットのオフラインマップをReactで使用しています。これは、世界中のすべての国の GeoJSONファイルに手動でロードされます。私はその後、最初に動作するthis.props.data
から受け取ったデータに応じて条件付きで各国の色を付けます。リーフレットエラー:clearLayersは関数ではありません
しかし、問題は、新しいthis.props.data
をして来ているときの色を更新するから来ている
私は、これらの二つの成分でそれを管理しようとしている:。
componentWillReceiveProps(nextProps) {
if(this.props.data) {
let map = this.map;
console.log(map); // It shows the leaflet object!
console.log(nextProps.data); // It's logged
console.log(this.props.data); // Also logged
if (nextProps.data !== this.props.data) {
map.clearLayers(); // Error comes here?
console.log("New data doesn't match old!"); // This logs correctly
}
}
},
componentDidUpdate(prevProps, prevState) {
if(this.props.data){
let map = this.map;
if (prevProps.data !== this.props.data) {
L.geoJson(this.countries, { // from import
}).addTo(map);
}
}
},
は私が間違って何をしているのですか?条件が満たされた場合、古いデータが新しいデータと一致しない場合、マップはclearLayers();
のすべてのレイヤーをクリアする必要があります。地図が見つからない場合はこのエラーを理解できます。私はthis.map
でアクセスしているため、スコープ上の問題ではありません。
'clearLayers()'関数が存在しますか?スペルミスである可能性がありますかスペルを確認してください。 –
'clearLayers'は[LayerGroup](http://leafletjs.com/reference-1.0.3.html#layergroup-clearlayers)のマップではなく、 – xmojmr
のようです。あなたが正しいように見えますが、私はgeojsonをオブジェクト化しなければなりません範囲を避けるために 'this'を使ってclearLayersを実行します。 – cbll