15

私はいくつかの他のコンポーネントからアクションをディスパッチしており、ストアはsvgArrプロパティで更新されていますが、次のステートレス コンポーネントconnect'edがストアに追加されていますが、ストアが変更されたときに更新されませんsvgArr

それはステートレスコンポーネントであるため、どのように動作すると思われますか? それとも私は何か間違っていますか?

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;
4

5 に答える 5

22

Layer コンポーネントの接続バージョンではなく、Layer をエクスポートしているようです。

Redux のドキュメントを見ると: https://github.com/reactjs/react-redux/blob/master/docs/api.md#inject-dispatch-and-todos

それは次のようなものでなければなりません

function mapStateToProps(state) {
  return {svgArr: state.svgArr}
}
export default connect(mapSTateToProps)(Layer)

于 2016-02-17T09:05:22.600 に答える
16

これがあなたのコードの書き直しです

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;
于 2016-02-18T08:19:18.377 に答える