>  Q&A  >  본문

MUI 스위치를 클릭하면 표시 및 값을 업데이트할 수 없습니다.

<p>현재 프로젝트에서 사용하고 있는 머티리얼 UI 토글 스위치에 문제가 있습니다. 구성 요소가 로드될 때 콘솔에 값을 기록하면 초기 값이 정확합니다. 그러나 "예"에서 "아니요"로 스위치를 클릭하면 "아니요"가 선택되었음을 나타내는 스위치가 올바르게 렌더링되고 콘솔 로깅이 다시 실행되지만 값은 여전히 ​​"예"로 표시됩니다. 스위치를 다시 클릭하고 다시 "아니요"로 전환하려고 하면 전환이 전환되지 않고 다시 렌더링되고 콘솔 로깅이 다시 실행되며 이제 값이 "아니요"로 업데이트됩니다.따라서 기본적으로 첫 번째 클릭은 스위치를 뒤집고 두 번째 클릭은 값을 뒤집습니다. 이전에 동일한 토글 스위치를 문제 없이 사용한 적이 있는데, 클릭 시 스위치와 값이 전환되도록 하려면 무엇을 수정해야 하는지 말해 줄 수 있는 사람이 있나요? </p> <p><strong>입력 변경 처리:</strong></p> <pre class="brush:php;toolbar:false;">const handlerInputChange = e => const { 이름, 값 } = e.target; setValues({ ...가치, [이름]: ( 값 유형 === 'string' ? (value).replace(/ +(?= )/g, '').trimStart() : value ) // 값이 문자열인 경우 선행 공백과 여러 공백을 제거합니다. }); };</pre> <p><strong>다음 양식에서 호출되는 스위치:</strong></p> <pre class="brush:php;toolbar:false;"><토글스위치 onChange={handleInputChange} label1='아니요' label2='예' 이름='useForCalcs' 값={values.useForCalcs} //></pre> <p><strong>ToggleSwitch 구성요소: </strong></p> <pre class="brush:php;toolbar:false;">import *를 'react'에서 React로 가져옵니다. '@material-ui/core'에서 {Box, Switch, Typography}를 가져옵니다. 기본 함수 ToggleSwitch(props) 내보내기 { const { label1, label2, 이름, onChange, 값} = props; const [checked, setChecked] = React.useState(false); const ConvertToEventParams = (이름, 값) => ({ 대상: { 이름, 값 } }); const curValue = 값 === 1 ? true : false; const handlerSwitch = e => { setChecked(e.target.checked) }; React.useEffect(() => { setChecked(curValue); }, [curValue]) // 확인된 값이 변경될 때마다 토글 스위치를 다시 렌더링합니다. const handlerChecked = e => 핸들스위치(e); onChange(convertToEventParams(name, (checked === false ? 1 : 0))) // True/False를 1/0 값으로 변환 }; 반품 ( <박스> <타이포그래피> {라벨1} {<스위치 이름={이름} 확인됨={확인됨} 값={확인됨} onChange={handleChecked} inputProps={{'aria-label': '스위치'}} />} {라벨2} </타이포그래피> </박스> ); }</pre> <p><br /></p>
P粉638343995P粉638343995403일 전452

모든 응답(1)나는 대답할 것이다

  • P粉298305266

    P粉2983052662023-08-16 10:48:25

    ToggleSwitch 구성 요소에서 상태와 선택된 값을 처리하고 있습니다. 로컬 상태(선택됨)와 소품(값)이 모두 있고 이를 동기화하려고 합니다.

    이 문제를 해결하려면 스위치와 값이 올바르게 동기화되었는지 확인하세요

    상위 구성 요소에서 값 prop을 전달하고 해당 prop을 직접 사용하여 스위치 상태를 확인할 수 있습니다. 불필요한 상태와 효과를 제거하여 구성 요소 코드를 단순화할 수 있습니다.

    value prop을 직접 사용하여 스위치의 초기 상태를 확인하고 onChange 함수를 사용하여 상위 구성 요소를 업데이트할 수 있습니다.

    으아악

    회신하다
    0
  • 취소회신하다