Search code examples
javascriptreactjsfunctional-programmingreduxredux-thunk

Connect not working with StateLess component in Redux-react


I'm dispatching an action from some-other component , and store is getting updated with svgArr property, but though the following Stateless component connect'ed to the store , it ain't getting updated when store changes for svgArr.

Is it how it suppose to behave as it's a stateless component ? Or am I doing something wrong ?

const Layer = (props) => {
  console.log(props.svgArr);
  return (<div style = {
    {
      width: props.canvasWidth,
      height: props.canvasWidth
    }
  }
  className = {
    styles.imgLayer
  } > hi < /div>);
};

connect((state) => {
  return {
    svgArr: state.svgArr
  };
}, Layer);

export default Layer;

Solution

  • Here's a rewrite of your code

    import {connect} from 'react-redux';
    
    // this should probably not be a free variable
    const styles = {imgLayer: '???'};
    
    const _Layer = ({canvasWidth}) => (
      <div className={styles.imgLayer} 
           style={{
             width: canvasWidth,
             height: canvasWidth
           }}
           children="hi" />
    );
    
    const Layer = connect(
      state => ({
        svgArr: state.svgArr
      })
    )(_Layer);
    
    export default Layer;