• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Strona nie renderuje nowych kart po kliknięciu submit {react}

0 głosów
393 wizyt
pytanie zadane 10 maja 2022 w JavaScript przez chrystian Gaduła (4,780 p.)

Nie dostaję żadnego błedu a Card i tak się nie renderuje  nie wiem dlaczego 

Funkcja wysyłając dane do innego pliku po kliknięciu submit

<form className="Card-inputs" onSubmit={SendtoStorage}>

export const StoreProperties = React.createContext(null);
const SendtoStorage = (event) => {
		window.localStorage.setItem(`@${props1.key}`, JSON.stringify(props1));

		setCount((count) => (count = 1));
		<StoreProperties.Provider value={props1}> </StoreProperties.Provider>;
		setProps(
			(props1) =>
				(props1 = {
					key: "",
					image: "",
					country: "",
					title: "",
					cost: "",
				})
		);
		event.preventDefault();
	};

kod renderujący kartę 

import { useEffect, useState } from "react";
import { StoreProperties } from "./AddCard";
export default function CardData({ RenderingComponent }) {
	const [storageStuff, setStorageStuff] = useState([]);

	useEffect(() => {
		// const onStorage = () => {
		// 	Object.entries(localStorage).map(([valueJSON]) => {
		// 		const valueStorage = JSON.parse(valueJSON);
		// 		console.log("valueJSON:", valueJSON, " /valueStorage:", valueStorage);
		// 		setStorageStuff((prevStorageStuff) => [...prevStorageStuff, valueStorage]);
		// 		return console.log(storageStuff);
		// 	});
		// };
		// window.addEventListener("storage", onStorage);

		// return () => window.removeEventListener("storage", onStorage); cleanup hook
		setStorageStuff((prevStorageStuff) => [...prevStorageStuff, StoreProperties]);
	}, []);

	return storageStuff.map((item) => {
		return <RenderingComponent key="{item.key}" Image={item.image} Country={item.country} Title={item.title} Cost={item.cost} />;
	});
}

App.js

import Card from "./components/Card";
import CardData from "./components/CardData";
<div>
				<Card Image={Pic} Country="France" Title="Life lessons with Katie Zaferes" Cost={150} />
				<CardData RenderingComponent={Card} />
			</div>

 

komentarz 10 maja 2022 przez ScriptyChris Mędrzec (190,170 p.)

Możesz to wystawić na codesandbox.io? Będzie łatwiej przetestować.

1 odpowiedź

0 głosów
odpowiedź 10 maja 2022 przez ScriptyChris Mędrzec (190,170 p.)
wybrane 14 maja 2022 przez chrystian
 
Najlepsza

Skoro komponent App jest rodzicem komponentu AddCard (zawiera formularz dodawania karty) i Card (wyświetla kartę), to IMO najprościej będzie współdzielić stan (podnieść go) w App - niech AddCard przyjmuje funkcję, która na submit zostanie wywołana z przekazaniem obiektu karty, a App wtedy zaktualizuje stan swojej tablicy kart i będzie renderować odpowiednią liczbę instancji komponentu Card.

Poprawiony kod: https://codesandbox.io/s/focused-star-xp7xv8?file=/src/App.js

komentarz 10 maja 2022 przez chrystian Gaduła (4,780 p.)
ok mam jeszcze jeden problem a nawet dwa

pierwszy  ta renderujaca się druga pusta karta oraz jak kilam serdzuszko to wartość się z Random się zmieniają

Do drugie odp zrobić to jako useState?

Podobne pytania

0 głosów
1 odpowiedź 221 wizyt
0 głosów
1 odpowiedź 288 wizyt
pytanie zadane 4 maja 2020 w JavaScript przez poldeeek Mądrala (5,980 p.)
0 głosów
0 odpowiedzi 569 wizyt

93,720 zapytań

142,641 odpowiedzi

323,265 komentarzy

63,269 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...