我只想从Firebase数据库中获取一个字符串,并更新组件中的“eventname”字段,但我很难做到这一点。到目前为止我的代码:
import React from 'react';
import {ref} from '../Firebase';
class EventDisplay extends React.Component {
constructor () {
super();
this.state = {
eventName: "No event Selected."
};
}
render () {
return (<div>
<h1>Name of Event: {this.state.eventName}</h1>
<h1>Date and Time: Dummy Name</h1>
<h1>Event Description: Dummy Name</h1>
</div>);
}
changeEventName(str) {
this.setState({eventName: str});
}
componentWillMount() {
const events = ref.child('events/event1/Title');
var param;
events.on('value', (function(snapshot) {
param = snapshot.val();
console.log(snapshot.val());
changeEventName(param);
})
);
console.log(param);
}
}
export default EventDisplay;
但是,changeEventName似乎没有定义它所在的位置。在我试图记录param的控制台中也会出现“undefined”,但snapshot.val()具有所需的字符串。谢谢
changeEventName所在位置似乎未定义
在调用ChangeEventName
时,需要在其前面加上this
。
this.changeEventName
另外,由于您是在回调中调用它,因此首先需要绑定该方法,以便保留this
的值。有很多方法可以做到这一点,最常见的是:
this.changeEventName = this.changeEventName.bind(this)
events.on('value', ((snapshot) => { ... }));
我是reactjs的新手,我不知道如何从父组件中更改子组件的状态。下面是代码 每当对父组件中的执行时,我希望子组件接收。 有什么建议吗?
问题内容: 我想在数组的末尾添加一个元素,这是正确的方法吗? 我担心如果就地修改阵列可能会造成麻烦-是否安全? 制作数组副本的另一种选择似乎是浪费的。 问题答案: 该阵营的文档说: 将此this.state视为不可变的。 您将直接更改状态,即使您此后再次“重置”状态,也有可能导致易于出错的代码。F.ex,它可能导致某些生命周期方法(如不会触发)。 在更高版本的React中,建议的方法是在修改状态以
我目前有一个类组件和一个函数组件在我的主组件 以下是的代码段: 类组件 功能部件 因此,我想做的是通过按钮的onClick操作,从功能组件更改类组件的状态。我怎样才能完成任务?
问题内容: 我想在数组的末尾添加一个元素,这是正确的方法吗? 我担心如果就地修改阵列可能会造成麻烦-是否安全? 制作数组副本的另一种选择似乎是浪费的。 问题答案: 该阵营的文档说: 将此this.state视为不可变的。 您将直接更改状态,即使您此后再次“重置”状态,也有可能导致易于出错的代码。F.ex,这可能会导致某些生命周期方法(如不会触发)。 在更高版本的React中,建议的方法是在修改状态
问题内容: 我正在使用ReactJS构建一个非常原始的测验应用程序,但无法更新组件的状态。它的行为是,尽管在以下方面始终落后一步,但它仍为DOM提供了正确的数组索引: 问题答案: 是不必是同步操作: 不会立即变异,但会创建待处理的状态转换。向后进入 无法保证对呼叫的同步操作,并且可以为提高性能而对呼叫进行批量处理。 因此,此处可能仍保留先前的值: 相反,请 使用 状态转换完成后调用的回调函数:
以下是: code>button.jsx的来源并不重要,它有一个常规的HTML单选按钮,触发本机DOM事件 预期流量为: null 尝试:在的onChange处理程序中: 问题: 尝试:在的onChange处理程序中: