Я не могу получить доступ к this.props.match.params.id в React. js - PullRequest
0 голосов
/ 06 мая 2020

Код моего родительского компонента, в котором я настраиваю свои реквизиты, следующий: -

import React, { Component } from "react";
import { Link } from "react-router-dom";
import axios from "axios";

const Anime = (props) => (
  <tr>
    <td> {props.anime.animeName}</td>
    <td>
      <Link to={"/anime/edit/" + props.anime._id}>
        <button type="button" class="btn btn-primary">Edit</button>
      </Link>
    </td>
   </tr>
); 

animeList() {
    return this.state.animes.map((animeObject) => {
      return (
        <Anime
          anime={animeObject}
          key={animeObject._id}
        />
      );
    });
  }

Мой родительский компонент работает отлично.

http://localhost:3000/anime/edit/5eb2f493091abc64b44bad23

НО, когда я пытаюсь получить доступ к Идентификатор передан на мой URL-адрес, я получаю «undefined».

Код дочернего компонента, при котором возникает ошибка

import React, { Component } from "react";
import axios from "axios";

  onSubmit(event) {
    event.preventDefault();
    const anime = {
      animeName: this.state.animeName,
    };

    console.log("The ID is ", this.props.match.params.id) // getting UNDEFINED

    axios
      .put("http://localhost:4000/animes/update/" + this.props.match.params.id, anime)
      .then((res) => console.log(res.data))
      .catch((err) => console.log(err));
  }

Я хочу получить доступ к идентификатору в моем URL-адресе.

1 Ответ

1 голос
/ 06 мая 2020

Вероятно, вам нужно обернуть ваш дочерний компонент в withRouter. Что-то вроде этого

import React from 'react'
import { withRouter } from 'react-router'

const MyChildComponent = (props) => {
  // You can use props here
  return <div />
}

export default withRouter(MyChildComponent)

Приведенный вами фрагмент кода кажется неполным, но к реквизитам можно получить доступ только изнутри компонента реакции.

В качестве альтернативы вы можете использовать другой способ извлечь идентификатор из URL-адреса. Что-то, что не включает в себя реактивный маршрутизатор. Например

const path = window.location.pathname.split('/')
const id = path[path.length - 1]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...