Jak mogę zmienić stan komponentu React z mojego starego kodu jQuery ze starszej wersji ?Zmień stan komponentu React na stary zewnętrzny JavaScript?
Mam składnikiem tak:
var AComponent = React.createClass({
getInitialState: function() {
return { ids: [] }
},
render: function() {
...
},
onButtonClick: function() {
ids.splice(…); // remove the last id
}
});
Kiedy dzieje się coś szczególnego w starym kodzie jQuery zupy, chciałbym naciskać id do AComponent.state.ids
. Jak mogę to zrobić?
Jednym "oczywistym" rozwiązaniem jest anty-wzór; tutaj jest:
var componentInstance = AComtonent({});
React.renderComponent(componentInstance, document.getElementById(...));
// Somewhere else, in the jQuery soup. Something special happens:
componentIntance.state.ids.push(1234);
componentIntance.setState(componentInstance.state);
To antywzorzec projektowy, według this email from a Facebook developer, bo pisze że componentInstance
może zostać zniszczona przez React.
Myślę, że według projektu mutacja stanu ma być wewnętrzna, więc jeśli chcesz ją zmienić z zewnątrz, powinieneś użyć rekwizytów. Co oznacza podział komponentu na dwie części w twoim przypadku. IE: przenoszenie twojego stanu do czegoś, co obejmuje twój spust do zupy jquery, a tym samym rozwiązanie twojego problemu. –
@plus Dobrze wiedzieć, że mutacja stanu powinna być wyłącznie wewnętrzna. Nie rozumiem, co masz na myśli mówiąc "obejmując spust do zupy jquery" * - czy miałeś na myśli to, że stan powinien być umieszczony poza komponentem i przekazałbym państwowe mutatory jako rekwizyty do komponentu? (Jak w odpowiedzi Kulesy.) – KajMagnus