неожиданная ошибка, когда я редактирую комментарий в модальном режиме, затем возвращаюсь к комментариям и удаляю - PullRequest
1 голос
/ 03 марта 2020

когда я открываю модальный комментарий и нажимаю кнопку редактирования, он открывает другой модал, затем я редактирую комментарий и нажимаю кнопку редактирования, закрываю модальный режим редактирования, и изменения вносятся, и комментарий редактируется, но когда я нажимаю кнопку удаления Кнопка в том же комментарии дает сообщение об ошибке

TypeError: null не является объектом (оценивается как snapshot.val (). commentTxt ')

и 'snapshot.val (). commentTxt' находится внутри функции редактирования, а не функции удаления, так почему она появляется только при нажатии кнопки удаления, зная, что кнопка удаления работает и удаляет комментарий, и на него это не влияет по ошибке -

вот код редактирования и удаления:

editComment = () => {
        firebase.database()
        .ref(`posts/${this.props.postKey}/comments/${this.state.editCommentKey}`)
        .on('value', snapshot =>{
            if (this.state.editComment === snapshot.val().commentTxt){
                this.setState({editCommentModalVisible: false})
            }
            else{
                firebase.database()
                .ref(`posts/${this.props.postKey}/comments/${this.state.editCommentKey}/commentTxt`)
                .set(this.state.editComment)
                this.setState({editCommentModalVisible: false})
            }
        })
    }
    deleteComment = (item) => {
        firebase.database().ref('posts').child(this.props.postKey/*'-M0IviCqMGE_PxoqNd0W'*/)
        .on('value', snap => {this.makeCommentIncrement =  snap.val().commentsNumber})
        this.makeCommentIncrement= this.makeCommentIncrement-1
        firebase.database().ref(`posts/${this.props.postKey}/commentsNumber`).set(this.makeCommentIncrement)
        firebase.database().ref(`posts/${this.props.postKey}/comments/${item.commentKey}`).remove()
        .catch(error => {
            alert(error.toString())
            return
        })
    }

1 Ответ

1 голос
/ 04 марта 2020

Когда вы делаете someRef.on('value', someFunction), вы добавляете слушателя. Функция someFunction выполняется каждый раз, когда изменяются данные в someRef. Эти слушатели должны быть отключены вручную (см. Отсоединить слушателей ), или вы можете использовать once вместо on (см. Считывание данных один раз ).

Когда вы удаляете комментарий, вы изменяете данные в ссылке на комментарий (вы делаете его нулевым), поэтому snapshot.val().commentTxt выдает ошибку, потому что snapshot.val() является нулевым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...