react-lifecycle-component在componentDidMount

时间:2017-11-02 17:50:44

标签: reactjs react-lifecycle react-props

我在我的反应应用中使用react-lifecycle-component,并且在这种情况下我需要componentDidMount回调来从后端加载一些数据。要知道要加载什么我需要道具,我找不到检索它们的方法。

这是我的容器组件:

import { connectWithLifecycle } from "react-lifecycle-component";

import inspect from "../../../libs/inspect";
import fetchItem from "../actions/itemActions";
import ItemDetails from "../components/ItemDetails";

const componentDidMount = () => {
  return fetchItem(props.match.params.number);
};

// Which part of the Redux global state does our component want to receive as props?
const mapStateToProps = (state, props) => {
  return {
    item: state.item,
    user_location: state.user_location
  };
};

// const actions = Object.assign(locationActions, lifecycleMethods);
export default connectWithLifecycle(mapStateToProps, { componentDidMount })(
  ItemDetails
);

任何线索?

感谢。

1 个答案:

答案 0 :(得分:1)

import React, { Component } from 'react'
import { connect } from 'react-redux'
import fetchItem from '../actions/itemActions'

class Container extends Component {
  state = {
    items: []
    }

    componentDidMount() {
      const { match } = this.props
      fetchItem(match.params.number)
      // if your fetchItem returns a promise
      .then(response => this.setState({items: response.items}))
    }

    render() {
      const { items } = this.state
      return (
      <div>
        { items.length === 0 ? <h2>Loading Items</h2> :
          items.map((item, i) => (
            <ul key={i}>item</ul>
            ))
          }
      </div>
      )
    }

const mapStateToProps = (state, props) => {
  return {
    item: state.item,
    user_location: state.user_location
  }
}

export default connect(mapStateToProps)(Container)

虽然我不知道你在哪里使用你从Redux商店拿走的道具......