- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在最新的 React 16.5.2 中使用 getDerivedStateFromProps 生命周期钩子(Hook)。为什么我无法访问组件的 this 对象?我做错了什么吗?
class EmailInput extends Component {
state = { email: this.props.defaultEmail };
handleChange = event => {
this.setState({ email: event.target.value });
};
getDerivedStateFromProps() {
this.doSomething();
}
doSomething = () => {
//do something here
}
render() {
return <input onChange={this.handleChange} value={this.state.email} />;
}
}
最佳答案
您不能使用this
来访问非静态方法。您需要定义静态方法:
static getDerivedStateFromProps() {
EmailInput.doSomething();
// ^^ class name
//OR,
// this.doSomething(); // accessible, coz doSomething is now static method
}
static doSomething() {
//do something here
}
您可以在 mdn docs 中了解有关静态方法的更多信息.
此外,我们在非静态方法中使用this.props
、this.state
分别访问props和state。但是自getDerivedStateFromProps是一个静态方法,我们需要从它的参数中访问:
static getDerivedStateFromProps(props, state) {
// correct
console.log(props, state)
// incorrect
// console.log(this.props, this.state)
// `this` can be used only for static methods
// that are inside the class
}
关于javascript - react getDerivedStateFromProps 无法访问这个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52630690/
我已经阅读了reactjs.org上有关getDerivedStateFromProps的文档。我看过用例。我明白为什么要使用它。 但我无法弄清楚它如何处理返回值。因此我的问题是,当它返回时.....
我使用 React 16.3.1 和 next.js。 我将 getDerivedStateFromProps 放入扩展 PureComponent 的类中。 这是代码: Header.js impo
在此示例中 https://codepen.io/ismail-codar/pen/QrXJgE?editors=1011 class Counter extends React.Component
如何在静态 getDerivedStateFromProps 中调用组件函数? 这是我的代码 class Box extends Component { updateVariables() {
根据这篇关于 what's news in React 16.3 的帖子,在下一次更新中 componentWillReceiveProps 将有一个替代品,即 getDerivedStateFrom
从API和React架构设计的角度来看,是否有任何问题使其静态化? 最佳答案 Making certain lifecycles static to prevent unsafe access of
如何比较数组中的状态?我无法使用 !== 或使用 .length static getDerivedStateFromProps(props, state) { if(props.langua
我正在探索 React,但对生命周期方法和父子通信有些困惑。具体来说,我正在尝试创建一个组件,它包装一个选择元素并在选择“其他”选项时添加一个输入框。我已经使用 getDerivedStateFrom
我是 React 的新手,只是一个关于在 getDerivedStateFromProps 生命周期方法中访问静态属性的问题,下面是我的代码: export default Child extends
在 React 组件中使用 getDerivedStateFromProps 生命周期方法时,返回的状态是完全覆盖组件的现有状态,还是只是更新返回的特定状态属性?例如, class foo exten
我在最新的 React 16.5.2 中使用 getDerivedStateFromProps 生命周期钩子(Hook)。为什么我无法访问组件的 this 对象?我做错了什么吗? class Emai
我还没有研究静态 getDerivedStateFromProps,所以我试图了解它。 我知道 React 通过引入一个名为 static getDerivedStateFromProps() 的新生
componentWillReceiveProps 和 getDerivedStateFromProps 到底是什么对我来说是个微妙的问题。因为,我在使用 getDerivedStateFromPro
我正在更新一个遗留组件,它使用: shouldComponentUpdate() 以避免昂贵的状态重新计算 componentWillUpdate() 进行重新计算并在 1 通过时呈现 docs说 i
我正在将一个类组件转换为一个函数组件,并想看看 useEffect()可以替换以下静态函数 static getDerivedStateFromProps(props) { const { p
getDerivedStateFromProps is being added as a safer alternative to the legacy componentWillReceivePro
如 this React Github issue 中所读我看到越来越多 the cost of render() is relatively small 在 React 16.3 中,我想知道为什么
我想将状态变量 books 设置为 API 的结果。我无法在 componentDidMount 中执行此操作,因为我一开始没有 token ,需要它从 API 获取结果。当我运行以下代码时,状态bo
我对 getDerivedStateFromProps 如何与 Mobx 可观察对象有一些误解。我知道,Mobx 对“读取”属性(通过“点入”)、可跟踪函数等使用react。 例如,我存储了可观察对象
我不明白,为什么当我尝试在 getDerivedStateFromProps 方法中启动函数 getTodosList - 它总是向我返回 TypeError - Cannot read proper
我是一名优秀的程序员,十分优秀!