#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
, которое не определено. Вам нужно будет выполнить некоторую отладку, чтобы выяснить, почему это так.