Необработанное отклонение (ошибка): ошибка Reference.set: первый аргумент содержит неопределенное значение в свойстве ‘signup.test.Robots.props.history.location.state’

#javascript #html #reactjs #firebase #firebase-realtime-database

#javascript #HTML #reactjs #firebase #firebase-realtime-database

Вопрос:

Кнопка переключения в моем файле react не отправляет никаких данных в firebase. Код возвращает эту ошибку: Необработанное отклонение (ошибка): ошибка Reference.set: первый аргумент содержит неопределенное значение в свойстве ‘signup.test.Robots.props.history.location.state’.

Я также определил все свои реквизиты. Пожалуйста, помогите мне, если вы обнаружите ошибку.

кнопки:

  <div data-toggle="buttons" class="btn-group bizmoduleselect mt-2 lg:w-1/3">
                                                

                                                    <label class="btn btn-default mx-1  rounded " >
                                                        <div class="bizcontent  py-2" id="bizcontent">
                                                            <input type="checkbox" id="checkbox" name="Space" autocomplete="off" value="Space" hidden 
                                                            checked={this.state.isSpace}
                                                            onChange={this.onChangeSpace} />
                                                            <span class="glyphicon glyphicon-ok glyphicon-lg"></span>
                                                            <p>Space</p>
                                                        </div>
                                                    </label>
                                                    <label class="btn btn-default mx-1 rounded">
                                                        <div class="bizcontent py-2 "  >
                                                            <input type="checkbox" id="checkbox" name="Robots" autocomplete="off" value="Robots" hidden 
                                                             checked={this.state.Robots}
                                                             onChange={this.onChangeRobots}/>
                                                            <span class="glyphicon glyphicon-ok glyphicon-lg"></span>
                                                            <p>Robots</p>
                                                        </div>
                                                    </label>
                                                    
                                                    <label class="btn btn-default mx-1 rounded">
                                                        <div class="bizcontent  py-2">
                                                            <input type="checkbox" name="Magic" autocomplete="off" value="Magic" hidden 
                                                            checked={this.state.isMagic}
                                                            onChange={this.onChangeMagic} />
                                                            <span class="glyphicon glyphicon-ok glyphicon-lg"></span>
                                                            <p>Magic tricks</p>
                                                        </div>
                                                    </label></div>
  

состояния и реквизиты:

 constructor(props) {
        super(props);
        this.state = {
            name: '',
            age: '',
            email: '',
            phone_number: '',
            redirect: false,
            showAlert: false,
            alertMessage: '',
            isSpace: '',
            Robots: '',
            Magic: '',
            
        }
    
        this.signup = this.signup.bind(this);
        this.onNameChange = this.onNameChange.bind(this);
        this.onAgeChange = this.onAgeChange.bind(this);
        this.onEmailChange = this.onEmailChange.bind(this);
        this.onNumberChange = this.onNumberChange.bind(this);
        this.onChangeSpace = this.onChangeSpace.bind(this);
        this.onChangeMagic = this.onChangeMagic.bind(this);
        this.onChangeRobots = this.onChangeRobots.bind(this);




    }

    
    onChangeSpace = () => {
        console.log("onChanges");
        this.setState(initialState => ({
          isSpace: !initialState.isSpace,
        }));
      }
    
      onChangeMagic = () => {
        console.log("onChanges");
        this.setState((currentState) => ({
            Magic: currentState.Magic, 
        }));
      }
      onChangeRobots = () => {
        console.log("onChanges");
        this.setState((currentState) => ({
            Robots: currentState.Robots, 
        }));
      }
  

Отправка данных в firebase:

     import firebase from '../firebase.js';

export function register(email, name, age, phone_number, isSpace, Robots, Magic, isArt, isMusic, _this) {

    firebase.database().ref('/signup/'   name).once('value').then(function (snapshot) {
        if (snapshot.val() === null || snapshot.val() === undefined) {
            firebase.database().ref('signup/'   name).set({
                name: name,
                age: age,
                email: email,
                phone_number: phone_number,
                isSpace: isSpace,
                Robots: Robots,
                Magic: Magic,
                
            });
            
        }

    });
}
  

Комментарии:

1. Не могли бы вы зарегистрировать содержимое Robots свойства перед отправкой его в firebase?

2. да, я пробовал использовать консоль. журнал, но на консоли ничего не печатается (кажется, состояния не меняются?)

Ответ №1:

Сообщение об ошибке сообщает вам, что вы передали недопустимое значение set() . Прочитайте это внимательно:

Ошибка Reference.set: первый аргумент содержит неопределенное значение в свойстве ‘signup.test.Robots.props.history.location.state’

Это говорит о том, что значение с путем signup.test.Robots.props.history.location.state не определено. Итак, похоже, что все, что вы передали как Robots , содержит вложенное свойство props.history.location.state , которое не определено. Вам нужно будет выполнить некоторую отладку, чтобы выяснить, почему это так.