react-mapbox-gl icon indicating copy to clipboard operation
react-mapbox-gl copied to clipboard

Layers do not renderer

Open flannerybh opened this issue 2 years ago • 2 comments

When a map has a layer something like this:

<Layer type="symbol" id="marker" layout={{ 'icon-image': 'school-15' }}>

<Feature coordinates={[-98.978340, 42.539770]} />

</Layer>

The layer does not render, this is because commit 4926e492cef3a77e57a8cdf7594e9340d499392e changed layer.ts's UNSAFE_componentWillMount to componentDidMount. With that change, render is called before initialize. Since on the initial render, the source is not defined, source.setData(...) is not called.

If something else triggers a render, like calling setState({}), the layer will pop in.

Suggested Fix

I think creating a constructor for the Layer class and calling this.initialize() in the constructor (rather than in componentDidMount will fix this issue.

flannerybh avatar Nov 21 '22 22:11 flannerybh

This seems like a pretty big issue. Does that mean you currently can't use this lib to show data?

emlyn-h avatar Mar 09 '23 21:03 emlyn-h

I got around this by adding setState({}) on a short timer as I mentioned in the issue. Not ideal, but it works. I just wanted to document the issue.

flannerybh avatar Mar 09 '23 21:03 flannerybh