私はLookupPage.jsxとAccountDetails.jsxのファイルを持っています。ルックアップReactで値渡しで参照するのではなく、どのように渡すのですか?
this.updateCustomer = (customer) => {
if(JSON.stringify(customer.address) !== JSON.stringify(this.state.activeAccount.customer.address)) {
console.log('address changed');
customer.update_address = true;
customer.address.source = 'user';
}
return fetch(
`${API_ENDPOINT}/customer/${customer.id}/`,
{
method: 'PATCH',
headers: {
'Authorization': 'Token ' + this.props.session_token,
'Content-Type': 'application/json',
},
body: JSON.stringify(customer),
}
).then(restJSONResponseToPromise).then(responseJSON => {
if(responseJSON.results){
console.log('update customers client side.')
}
}, clearSessionIfInvalidToken(this.props.clearSession));
};
<AccountsDetailModal
show={this.state.showAccountDetail}
close={this.toggleAccountDetail}
customer={this.state.activeAccount.customer}
updateCustomer={this.updateCustomer}
/>
側AccountDetailsで
this.onChangeAddress = (e) => {
const customer = {...this.state.customer};
const address = customer.address;
address[e.target.name] = e.target.value;
customer.address = address;
this.setState({customer, errors: {
...this.state.errors,
[e.target.name]: [],
}});
};
this.saveCustomer =() => {
this.setState({postDisable: true});
const errors = this.getFormErrors();
const hasErrors = !every(errors, (item) => !item.length);
if(!hasErrors){
this.props.updateCustomer(this.state.customer);
} else {
sweetAlert('Error!', 'Form is invalid.', 'error');
}
this.setState({postDisable: false});
};
this.componentDidMount =() => {
this.setState({customer: this.props.customer});
}
で
私は顧客を更新しています対処し、それがアクティブなアカウントを更新して対処するので、それは参照によって渡されているように思えます。私は、アドレスが変更された/元のアドレスと異なる場合にのみ、顧客アドレスを更新することを望んでいます。これを行うために私のコードをどのように変更すればよいですか?
JSで引数を渡す方法を変更することはできません(オブジェクト - > "参照")。 mutableと不変/純粋な関数を偶然探していますか? –
[JavaScriptが参照渡し言語か渡し渡し言語か]の可能な複製(https:// stackoverflow。com/questions/518000/is-javascript-a-pass-by-value-by-value-by-value-by-value-language) –
これはReactとは何の関係もなく、javascriptが変数を処理する方法とは関係ありません。詳細については、上記のリンクを参照して、「参照渡しまたは渡し渡し」を参照してください。 –