Какой идентификатор я должен использовать в своей базе данных для запроса на получение? - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь выяснить, какой «идентификатор» должен быть у меня в файле 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
...