"setState (...) : 탑재 된 또는 탑재 된 구성 요소 만 업데이트 할 수 있습니다."라는 경고 메시지가 나타납니다. 이 구성 요소가 포함 된 화면에서 다른 곳으로 이동 한 다음 다시 탐색하여 메시지를 보내려는 경우 비슷한 문제가있는 다른 게시물을 읽었지만 비동기 콜백을 위해 리스너를 제거하는 경향이 있습니다. 여기에서 문제를 일으키는 코드는 sendMessage() 함수에 있으며 콜백이 없습니다.React 마운트 해제 된 구성 요소에 대한 기본 setState() 경고
내 구성 요소가 다시 마운트되지 않은 이유가 확실하지 않습니다. 여기서 내가 뭘 잘못하고 있니?
import React, { Component } from 'react';
import {
StyleSheet,
Text,
TextInput,
View
} from 'react-native';
class MessageEntry extends Component {
constructor(props) {
super(props);
this.state = {
content: ''
}
}
render() {
return (
<View>
<TextInput ref="newMessageContent"
style={styles.input}
multiline={true}
placeholder="Ask me anything! :-)"
onChangeText={(content) => this.setState({content: content})}
value={this.state.content}
/>
<Text onPress={() => this.sendMessage(this.props.chatRef)} style={styles.button}>Send</Text>
</View>
)
}
sendMessage(chatRef) {
if (this.state.content == '') { return false; }
chatRef.push({
content: this.state.content,
sent_at: Firebase.ServerValue.TIMESTAMP,
self: true
});
this.setState({content: ''});
}
}
export { MessageEntry }
chatRef 란 무엇입니까? –