반응형
ReactJs - 새로운 useStateRespect 후크의 preState?
저는 새로운 리액트 훅이 정말 마음에 들어서 현재 진행 중인 프로젝트에서 자주 사용하고 있습니다.prevState를 사용하고 싶은 상황이 발생하였습니다.useState
훅은 잘 모르겠지만 어떻게 해야 할지 모르겠어요.
이런 걸 해봤는데 컴파일이 안 돼요.
const [ someState, setSomeState ] = useState( new Map() )
setSomeState( prevState.someState.set( key, value ) )
(그런데 체크박스의 배열을 매핑하여 체크박스가 표시되어 있는 체크박스를 추적합니다.)
여기서 이 예를 따르려고 하는데setState
기능.
도와줘서 고마워요!
객체의 경우 분산 연산자를 사용하여prevState
의 범위 내에서setState
불러.
const [object, setObject] = useState({
firstKey: '',
secondKey: '',
});
setObject((prevState) => ({
...prevState,
secondKey: 'value',
}));
// object = {
// firstKey: '',
// secondKey: 'value',
// }
아래 토막은 사용 예를 보여 줍니다.prevState
오브젝트 상태를 설정합니다.
const {useState} = React;
const Example = ({title}) => {
const initialState = {
firstKey: 'empty',
secondKey: 'empty',
thirdKey: 'not empty',
}
const [object, setObject] = useState(initialState);
const withPrevState = () => {
setObject((prevState) => ({
...prevState,
secondKey: 'not empty',
}));
}
return (
<div>
<h5>Updates Second key to 'not empty'</h5>
<p>First key: {object.firstKey}</p>
<p>Second key: {object.secondKey}</p>
<p>Third key: {object.thirdKey}</p>
<button onClick={withPrevState}>
Update with prevState
</button>
<button onClick={() => {setObject({secondKey: 'not empty'})}}>
Update without prevState
</button>
<button onClick={() => {setObject(initialState)}}>
Reset
</button>
</div>
);
};
// Render it
ReactDOM.render(
<Example />,
document.getElementById("react")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.8.4/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.8.4/umd/react-dom.production.min.js"></script>
<div id="react"></div>
맵을 사용하려면 값을 조작하기 전에 맵을 복제해야 합니다.그렇지 않으면 원본이 변형되어Map
그리고 리액트는 변이 가능한 것을 다루지 않는다.state
.
const handleChange = useCallback(({ target: { name, checked } }) => {
setCheckbox(prevState => {
return new Map(prevState).set(name, checked);
});
}, []);
업데이트된 작업 예:
state updater
부터useState
는 현재 상태를 갱신하기 위해 사용할 수 있는 이전 상태를 반환하는 콜백 패턴을 제공합니다.
const [ someState, setSomeState ] = useState( new Map() )
setSomeState(prevState => prevState.set( key, value ) )
파괴된 변수의 이전 상태가 이미 있습니다.someState
다음 작업을 수행할 수 있습니다.
const [ someState, setSomeState ] = useState( new Map() )
setSomeState( someState.set( key, value ) )
이것을 사용하다
const [setSome, setSomeState] = useState({thing: 'loding', count: 1});
setSomeState(prev => ({...prev, count: prev.count + 1}));
prevState 및 useState를 사용하여 단일 값을 업데이트하려면 다음과 같이 하십시오.
const [count, setCount] = useState(0)
if(your-condition) {
setCount((prevState) => prevState + 1)
}
const [object,setObject] = useState({firstPropertie:'first',
secondPropertie:'second'})
setObject(prevState =>
return{...prevState,secondPropertie:'newValue'})
언급URL : https://stackoverflow.com/questions/55823296/reactjs-prevstate-in-the-new-usestate-react-hook
반응형
'source' 카테고리의 다른 글
반응 오류:스타일 프롭 값은 개체 반응/스타일 프롭 개체여야 합니다. (0) | 2023.03.25 |
---|---|
Junit 테스트 클래스 전체에서 스프링 애플리케이션 컨텍스트 재사용 (0) | 2023.03.25 |
Wordpress에서 사용자 지정 페이지 표시 Permalink를 만드는 방법 (0) | 2023.03.25 |
AngularJs가 컨트롤러($scope)의 양식 개체에 액세스할 수 없습니다. (0) | 2023.03.25 |
do_action 단축 코드가 있는 Visual Composer 그리드가 작동하지 않습니다. (0) | 2023.03.25 |