React-Leaflet中的映射状态

时间:2019-06-30 07:44:18

标签: reactjs leaflet mapping react-leaflet

你好吗?我需要你的帮助!我一直在尝试在React-Leaflet项目中映射状态。累了,筋疲力尽。希望有人能帮到我。 这是我的状态,以及在地图上标记的操作。

this.state = {
   markers: [
       {
          _id: 'SomeId',
          position:[51.509,-0.03],
          content: 'Something'}
       }
   ]      
}


{this.state.markers.map((position, _id, content) => 
       <Marker 
       key={_id} 
       position={position}>
       <Popup>
         <span>{content}</span>       
       </Popup>
     </Marker>
)}

无论我做什么,我都会得到

  

“未捕获的TypeError:无法读取null的属性'lat'”

2 个答案:

答案 0 :(得分:0)

该错误可能是代码的其他部分生成的,因为包含的内容中没有任何对象的lat属性。

因此,为了从状态存储的对象数组中呈现标记,您应该在循环使用map时对markers数组内的对象属性进行解构,以便直接使用它们:

{this.state.markers.map(({position, _id, content}) => 
       <Marker
            key={_id}
            position={position}
            icon={customMarker}>
            <Popup>
              {content}
            </Popup>
       </Marker>)
}

Demo

答案 1 :(得分:0)

回调函数带有3个参数,第一个参数是数组中的当前条目。必须通过它访问必需的属性。

    #include <stdio.h>
    #include <stdlib.h>

    int bintest();

    int main(){

        int* x = malloc(sizeof(int));

        printf("value of x:       %d\n",x);
        printf("address of x:     %d\n",&x);
        printf("value at %d: %d\n", x, *x);;

        printf("\n\n*****\nEnter value of x\n*****\n");
        scanf("\n%d", x);

        printf("value of x:       %d\n",x);
        printf("address of x:     %d\n",&x);
        printf("value at %d: %d\n", x, *x);
        bintest(x);
    }

    int bintest(int* y){
        printf("\ny: %d", *y);
    }