EDYCJA: to jest duplikat, patrz tutaj
Nie mogę znaleźć żadnych przykładów użycia nazwy klucza dynamicznego podczas ustawiania stanu. Oto co chcę zrobić:
inputChangeHandler : function (event) {
this.setState( { event.target.id : event.target.value } );
},
gdzie event.target.id jest używany jako klucz stanu do aktualizacji. Czy to nie jest możliwe w React?
Odpowiedzi:
Dzięki podpowiedzi @ Cory wykorzystałem to:
Jeśli używasz ES6 lub transpilatora Babel do transformacji kodu JSX, możesz to zrobić również za pomocą obliczonych nazw właściwości :
źródło
computed property names
trad
, tego właśnie szukałem, aby uniknąć duplikacji kodu do<Radio />
implementacji.this.setState({ [event.target.id]: event.target.value });
jaki sposób uzyskasz dostęp do tego stanu za pomocąthis.state......
?Gdy musisz obsłużyć wiele kontrolowanych elementów wejściowych, możesz dodać atrybut nazwy do każdego elementu i pozwolić funkcji obsługi wybrać, co robić na podstawie wartości event.target.name.
Na przykład:
źródło
this.state([event.target.name])
?Jak to osiągnąłem ...
źródło
this.forceUpdate();
co nie powinno być w przypadku najnowszej wersji React. Zobaczmy, jaki jest problem później!Chciałem tylko dodać, że możesz również użyć dekstrukturyzacji, aby przefaktoryzować kod i sprawić, by wyglądał ładniej.
źródło
W pętli z
.map
taką pracą:Zwróć uwagę na parametr
[]
intype
. Mam nadzieję że to pomoże :)źródło
Miałem podobny problem.
Chciałem ustawić stan, w którym klucz 2. poziomu był przechowywany w zmiennej.
na przykład
this.setState({permissions[perm.code]: e.target.checked})
Nie jest to jednak poprawna składnia.
Aby to osiągnąć, użyłem następującego kodu:
źródło
Dzięki ES6 + możesz po prostu zrobić [
${variable}
]źródło
Szukałem ładnego i prostego rozwiązania i znalazłem to:
Mam nadzieję że to pomoże
źródło
Pamiętaj o znaku cytatu.
źródło
Twój stan ze słownikiem aktualizuje jakiś klucz bez utraty innej wartości
Rozwiązanie jest poniżej
tutaj zaktualizuj wartość dla klucza „strona” o wartości 5
źródło
Może korzystać ze składni spreadu, coś takiego:
źródło