我的父组件设置道具的代码是这样的:-。
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的ID时,我得到的是 "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中的ID。
你可能需要将你的子组件包裹在你的组件中。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中提取id。一些不包含react-router的方法。比如说
const path = window.location.pathname.split('/')
const id = path[path.length - 1]