작성
·
393
0
Flatlist 입니다.
const renderItem = {item} => {
return (
<TextInput
value={true || fixDescription[item.order].value} onChangeText={onChangeText}/>
)
}
item과 fixDescription 둘다 useState 값이고 useEffect (()=>{AsyncStorage})를 통해서 값을 받아옵니다.
추측하기론, 컨솔 해보니 AsyncStorage가 비동기 방식이기 때문에, 처음에 빈칸으로 데이터가 떠서 {true || fixDescription[item.order].value} 이런식으로 데이터 없으면 null로 아예 안보이게 해줬는데 이렇게 하니 화면은 뜨는데 문제가 비동기처리 이후 데이터값이 들어와도 해당 TextInput의 value가 바뀌지 않다는 점이 문제입니다...
data는 flatlist의 아이템입니다. (flatlist의 item이니 [0]번째를 임의로 주었습니다.)
위의 컨솔 실행시 첫 빌드는 에러가 생기고, 저장해서 화면을 바꾸는( 핫리로드?) 시에는 컨솔이 작동하는 상황입니다.
답변 1
1
true || ... 은 아무 의미 없는 코드입니다. 항상 true라서 뒤에 코드가 실행되지 않습니다.
value={fixDescription?.[item.order]?.value}
이런 식으로만 쓰면 됩니다.
그러네요... true || ...
감사합니다. 옵셔널 체이닝 이군요.
https://ko.javascript.info/optional-chaining