react-mapbox-gl
react-mapbox-gl copied to clipboard
Layers do not renderer
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.
This seems like a pretty big issue. Does that mean you currently can't use this lib to show data?
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.