WebHU - Programozási kérdések és válaszok

MERN: _id átadása az összetevők között

Eléggé új vagyok a reagálásban, JS és én egy kicsit falba ütközünk.

Van egy MERN verem és fut egy alapvető olvasási és írási API-val. Megpróbálok linkelni egy új összetevőt (a Mongo azonosítóval), és lekérem az adott azonosítóhoz tartozó összes adatot. A linkelés működik, de nem tudom, hogyan adjam át az _id-t az új összetevőnek. Kellékeket használnék, ha a szülőtől a gyermekig, de ez a gyerektől a gyermekig.

Itt van az eddigi kódom.

Konténer

import React, { Component } from 'react';
import { Route, Switch} from 'react-router-dom';
import MyKids from '../MyKids/MyKids';
import ShowChild from '../ShowChild/ShowChild';
import Home from '../Home/Home';

import './RightPanel.css';

class RightPanel extends Component{

componentDidMount() {

}

render () {
    return (
    <div className="col-sm-9 right">

        <Route exact path='/' component={Home}/>
        <Route path='/mykids' component={MyKids}/>
        <Route path='/show' component={ShowChild}/>

    </div>
)

}

}

export default RightPanel;

Összetevő – MyKids

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

import Child from '../../Components/Child/Child'

class MyKids extends Component {
constructor(props) {
super(props);

let kids = [];

this.state = {
  kidsData: [],
};
}
componentDidMount() {
let kids = [];

fetch( 'http://localhost:3001/api/kids' )
.then( response => response.json())
.then( result => kids = result.data)
.then(() => console.log(kids))
.then(() => this.setState({kidsData: kids}))
}

render() {

  const { kidsName } = this.state;
  return (
    <div className = 'col-sm-12'>
      {this.state.kidsData.map((person, index) => (
        <p>Hello, <Link to={ `/show/${this.state.kidsData[index]._id}` } >{person.firstName}</Link></p>
      ))}

      <form method="post" action="http://localhost:3001/api/kids">
        <label>Enter Your Name</label>
        <input type="text" name="firstName" placeholder="Enter first name..." required />
        <input type="text" name="lastName" placeholder="Enter last name..." required />
        <input type="text" name="age" placeholder="Enter age..." required />
        <input type="text" name="notes" placeholder="Notes..." required />
        <input type="submit" value="Add Kid" />
      </form>
    </div>
);
}
}


export default MyKids;

A „Link to” remekül működik, és a következőt kapom: „http://localhost:3000/show/5b28f31be5fea723

Köszönünk minden segítséget!

19.06.2018

  • Az alábbi válaszom megoldotta a problémáját @Nick? 19.06.2018

Válaszok:


1

A ShowChild összetevő render metódusában az aktuális helyet a this.props.location.pathname használatával kaphatja meg az aktuális URL lekéréséhez. Ezután ebből kivonhatja a _id-et egyszerű karakterlánc-kivonattal, például substr()

19.06.2018
  • Ez működik, köszönöm! Bár biztos vagyok benne, hogy van rá jobb módszer. 20.06.2018
  • Rengeteg módszer létezik ugyanerre – a jobb vagy nem az szubjektív kérdés. Az Ön esetében fontolóra vette egy olyan állapotkezelési könyvtár hozzáadását, mint a Redux? Hozzájárulna némi sablon és tanulási görbe, de ez triviálissá teheti például az azonosító tárolását olyan helyen, ahol más összetevők hozzáférhetnek. Ismét olvassa el a következőt: miért nincs szüksége Reduxra, mielőtt belevágna? 20.06.2018
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..