Задать вопрос
@Yzurgzd

Почему не выводит данные(undefined)?

actions/apps.js
const API_URL = "http://127.0.0.1:8000";

export const getApp = (slug) => (dispatch) => {
  const url = `${API_URL}/api/apps/${slug}/`;

  axios
    .get(url)
    .then((res) => {
      dispatch({
        type: GET_APP,
        payload: res.data,
      });
    })
    .catch((err) => console.log(err));
};


reducers/apps.js
import { GET_APPS, GET_APP } from "../actions/types.js";

const initialState = {
  app: [],
};

export default function (state = initialState, action) {
  switch (action.type) {
    case GET_APP:
      return {
        ...state,
        app: action.payload,
      };
    default:
      return state;
  }
}


Шаблон
export class Detail extends Component {
  static propTypes = {
    app: PropTypes.array.isRequired,
    getApp: PropTypes.func.isRequired,
  };

  componentDidMount() {
    this.props.getApp(this.props.match.params.slug);
  }

  render() {
    return (
      <>
         <h1>{this.props.app.title}</h1>
      </>
}
const mapStateToProps = (state) => ({
  app: state.apps.apps,
});

export default connect(mapStateToProps, { getApp })(Detail);


От бекэнда все данные получаю.
5ee73335238a2204987160.jpeg
  • Вопрос задан
  • 164 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@Dasslier
FrontEnd Developer
У вас начальный стейт app это массив. При первом рендере вы запрашиваете у массива свойство title. После этого уже должен выполняться componentDidMount. Удалите получение title, и падать не будет
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы