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

Co zrobić my nowa kartka renderowała się za każdym razem gdy to localstorage wchodzi nowa wartość

Object Storage Arubacloud
0 głosów
139 wizyt
pytanie zadane 2 maja 2022 w JavaScript przez chrystian Gaduła (4,780 p.)
edycja 3 maja 2022 przez chrystian

Co zrobić my nowa kartka renderowała się za każdym razem gdy to localstorage wchodzi nowa wartość i usuwała się gdy  wychodzi

Edit: dostaje błąd 

Each child in a list should have a unique "key" prop.

moja app

 

import React from "react";
import Card from "./components/Card";
import Addcard from "./components/AddCard";
import Pic from "./img/cards/pexels-merve-şahin-11161043.jpg";
import data from "./components/CardData";
export default function App() {
	const cards = data.map((item) => {
		return <Card key={item.key} Image={item.image} Country={item.country} Title={item.title} Cost={item.cost} />;
	});

	return (
		<div>
			
			<Card Image={Pic} Country="France" Title="Life lessons with Katie Zaferes" Cost={150} />
			{cards}
			<Addcard />
			
		</div>
	);
}

add card 

import React, { useState } from "react";

export default function Addcard() {
	const [count, setCount] = useState(0);
	const [props1, setProps] = useState({
		key: "",
		image: "",
		country: "",
		title: "",
		cost: "",
	});

	const inputChange = ({ target }) => {
		const inputIdentity = target.dataset.identity;
		setProps((props1) => ({ ...props1, [inputIdentity]: target.value }));
	};

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

		setCount((count) => (count = 0));
		setProps(
			(props1) =>
				(props1 = {
					key: "",
					image: "",
					country: "",
					title: "",
					cost: "",
				})
		);
		event.preventDefault();
	};

	const plus = () => {
		setCount((count) => (count = 1));
	};

	return (
		<div className="Card-container Card-container-add">
			{count === 0 ? (
				<div className="Card-arrows">
					<span className="arrow-n-e">&#8598; </span>
					<span className="arrow-n-w"> &#8599; </span>
					<button className="addcard-button" onClick={plus}>
						+
					</button>
					<span className="arrow-s-e">&#8600; </span>
					<span className="arrow-s-w"> &#8601;</span>
				</div>
			) : (
				<div>
					<form className="Card-inputs" onSubmit={SendtoStorage}>
						<input className="addcard-inputs" id="input-0" onChange={inputChange} value={props1.key} placeholder="Name" data-identity="key"></input>
						<input className="addcard-inputs" id="input-1" onChange={inputChange} value={props1.image} placeholder="Image url" data-identity="image"></input>
						<input className="addcard-inputs" id="input-4" onChange={inputChange} value={props1.country} placeholder="Country" data-identity="country"></input>
						<input className="addcard-inputs" id="input-5" onChange={inputChange} value={props1.title} placeholder="Title" data-identity="title"></input>
						<input className="addcard-inputs" id="input-6" onChange={inputChange} value={props1.cost} placeholder="Cost" data-identity="cost"></input>
						<input type="submit" value="Save" className="addcard-inputs-button"></input>
					</form>
				</div>
			)}
		</div>
	);
}
const props = [];
let value = {};

window.addEventListener("storage", () => {
	Object.entries(localStorage).map(([valueJSON]) => {
		const valueStorage = JSON.parse(valueJSON);

		value = valueStorage;

	
		return console.log(props);
	});
});
 props.push(value);
export default props;

 

1
komentarz 3 maja 2022 przez rafal.budzis Szeryf (85,260 p.)
Event "storage" działa tylko dla pozostałych zakładek. W ten samej karcie w której ustawiłeś wartość nie otrzymasz tego eventu. Może to twój problem?

PS. Nie możesz robić sobie tablicy bez użycia stanu jeśli chcesz ją wyświetlać.
komentarz 3 maja 2022 przez chrystian Gaduła (4,780 p.)

Stan to znaczy to co jest w linku dobrze rozumiem?

 

Nie możesz robić sobie tablicy bez użycia stanu jeśli chcesz ją wyświetlać.

 

Stan

komentarz 3 maja 2022 przez chrystian Gaduła (4,780 p.)
Czyli co pierwszą nadpisać stałymi danymi a dopiero kolejne pobierać dane z storage?

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

+1 głos
2 odpowiedzi 131 wizyt
pytanie zadane 6 kwietnia w JavaScript przez sensor Użytkownik (680 p.)
0 głosów
0 odpowiedzi 80 wizyt
0 głosów
0 odpowiedzi 132 wizyt

92,565 zapytań

141,418 odpowiedzi

319,604 komentarzy

61,951 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...