React Native FlatList не обрабатывает запрос Axios API - PullRequest
1 голос
/ 12 марта 2019

Я новичок, чтобы реагировать на нативные, и я сталкиваюсь с проблемой обработки реквизита и состояния, когда я использую избыточность, я получаю данные, необходимые для рендеринга плоского списка в правильной форме, но кое-как свойство данных внутри плоский список видят только {this.props.customers} как неопределенные. Вот мой код:

  componentWillMount() {
    debugger;
    this.props.getCustomers();
    debugger;
  }

  componentDidUpdate(prevProps) {
    if (prevProps.customers !== this.props.customers) {
      this.props.getCustomers();
    }
  }


  render = () => {
    return (
      <View>
        <FlatList
          data={this.props.customers}
          renderItem={({ item }) =>
            <View style={styles.GridViewContainer}>
              <Text style={styles.GridViewTextLayout}>{item.name}</Text>
            </View>}
          keyExtractor={(x, index) => index}
          numColumns={3}
        />
      </View>
    );
  }
}

const mapStateToProps = (state) => {
  const customers = state.customers;
  console.log(customers);
  debugger
  return customers;

};


export default connect(mapStateToProps, {
  getCustomers
})(CustomersList);

И действие getCustomers:

export const getCustomers = () => {
    debugger;
    return (dispatch) => {
        dispatch(setCustomerLoading)
        axios
            .get('https://calm-sands-26165.herokuapp.com/api/customers')
            .then(res =>
                dispatch({
                    type: GET_CUSTOMERS,
                    payload: res.data,
                })
            )
            .catch(err =>
                dispatch({
                    type: GET_ERRORS,
                    payload: null
                })
            );
    };
}

Спасибо заранее.

1 Ответ

1 голос
/ 12 марта 2019

В mapStateToProps вы должны возвращать объект, а не значение. Каждая запись в этом объекте будет опорой для компонента, который подключен к магазину.

В вашем случае это должно быть исправлено:

const mapStateToProps = (state) => {
  const customers = state.customers;
  return { customers };
};

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...