我正在尝试向实时数据库 Firebase 添加步骤。当我添加步骤时,它在数据库中工作,但随后模态关闭,我没有任何错误,但模态无故关闭
我认为问题是当我调用 firebase 来更新它时(在 addTodo 函数中),但我不知道为什么。
TodoModal.js:
componentDidMount = async () => {
this.mounted = true;
};
compunentWillUnmount = () => {
this.mounted = false;
}
addTodo = async () => {
if (this.state.newStep !== "") {
try {
await firebase
.database()
.ref("Tasks")
.child(firebase.auth().currentUser.uid).child(firebase.auth().currentUser.uid)
.child(this.props.task.taskname)
.child("Steps")
.child(this.state.newStep)
.update({ title: this.state.newStep, status: false, dateAdd: date });
this.props.addStep({ title: this.state.newStep, status: false, dateAdd: date });
if (this.mounted) {
this.setState({ newStep: "" });//to reinitialize the newStep field
}
} catch (error) {
console.log(error);
}
} else {
Alert.alert("","field is required");
}
};
};
render() {
return (
<View>
<TextInput
onChangeText={(text) => this.setState({ newStep: text })}
value={this.state.newStep}
/>
<TouchableOpacity
onPress={() => this.addTodo()}
>
</TouchableOpacity>
</View>
);
}
}
);
TodoTask.js:
render() {
const task = this.props.task;
return (
<View>
<Modal
animationType="slide"
visible={this.state.showTaskVisible}
onRequestClose={() => this.toggleisModal()}
>
<TodoModal task={task} closeModal={() => this.toggleisModal()} />
</Modal>
</View>
)