Я пытаюсь выяснить, какой «идентификатор» должен быть у меня в файле ComponentDidMount моего Challengedetail: url:
$ {process.env.REACT_APP_API_BASE} / challengedetail / $ { id }
При каждом щелчке по вызову в файле Allchallenges открывается страница с подробностями о вызове, в качестве идентификатора которой указывается именно этот вызов, по которому щелкнули. На странице с деталями задачи я хочу напечатать название и описание задачи.
Я немного погуглил, и кажется, единственный способ сделать это - с помощью Redux? Или есть способ без использования Redux? Как это будет работать?
Все вызовы. js
{this.state.searchChallenges.map(challenge =>(
<Link to={`/challengedetail/${challenge._id}`}>
<Challengebox key={challenge._id} id={challenge._id} title={challenge.title} description=
{challenge.description}/>
</Link>
))}
Challengedetail. js
import React from 'react'
import DefaultLayout from "../layout/Default"
import './Challengedetail.css'
import Responsechallenge from '../components/Responsechallenge'
import axios from "axios"
import TakeChallenge from "../components/Takechallenge"
class Challengedetail extends React.Component {
constructor() {
super()
this.state = {
title:"",
description:"",
responses: []
}
}
componentDidMount(){
// debugger
axios({
method: "GET",
url: `${process.env.REACT_APP_API_BASE}/challengedetail/${id}`,
withCredentials: true
})
.then(response => {
console.log(response.data)
this.setState({
title: response.data.title,
description: response.data.description
})
})
.catch(error => {
console.log("Charles this is an error: ", error)
})
}
render() {
return (
<DefaultLayout>
<div className="challengedetailpage">
<div className="headercontainer">
<div className="challengesectionbox">
<h1>{this.state.title}charles</h1>
<p>{this.state.description}ffff</p>
</div>
<div className="takechallengebox">
<TakeChallenge/>
</div>
</div>
<div className="responsechallenges">
<Responsechallenge/>
<Responsechallenge/>
<Responsechallenge/>
</div>
</div>
</DefaultLayout>
)
}
}
export default Challengedetail