TIL stateを使用する際の注意(配列、オブジェクト)
5583 ワード
stateの使用上の注意
クラス構成部品でも関数構成部品でもstateを使用する場合は注意してください.
state値を変更する必要がある場合は、setStateまたはusStateで渡されるsetter関数を使用する必要があります.
const [object, setObject] = useState({a: 1. b:1});
object.b = 2;
これは間違ったコードです.配列やオブジェクトを更新する必要がある場合は、どうすればいいですか?
この場合、配列またはオブジェクトのコピーを作成し、コピーで値を更新できます.
コピーのステータスはsetStateまたはsetter関数で更新されます.
クラス構成部品でも関数構成部品でもstateを使用する場合は注意してください.
state値を変更する必要がある場合は、setStateまたはusStateで渡されるsetter関数を使用する必要があります.
const [object, setObject] = useState({a: 1. b:1});
object.b = 2;
これは間違ったコードです.配列やオブジェクトを更新する必要がある場合は、どうすればいいですか?
この場合、配列またはオブジェクトのコピーを作成し、コピーで値を更新できます.
コピーのステータスはsetStateまたはsetter関数で更新されます.
import React, { useState } from 'react';
import PropTypes from 'prop-types';
const MyComponent = ({name,numnum,children}) => {
// const nextObject = {...object, b: 2} // 사본을 만들어서 b 값만 덮어 쓰기.
const [object, setObject] = useState({a:1, b:2, c:3});
const test = () => {
setObject({
...object,
b:88
}
);
console.log(object)
}
return <div>안녕하세요, {name} 입니다.
<br/>
children 값은 {children}
좋아하는 건 {numnum}
<button onClick={()=>{test()}}/>
</div>
}
MyComponent.defaultProps = {
name:'기본'
};
MyComponent.propTypes = {
name : PropTypes.string,
numnum : PropTypes.string.isRequired
};
export default MyComponent;
Reference
この問題について(TIL stateを使用する際の注意(配列、オブジェクト)), 我々は、より多くの情報をここで見つけました https://velog.io/@normalduck/TIL-state를-사용할때-주의사항배열-객체テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol