【发布时间】:2019-12-01 04:41:07
【问题描述】:
我在 React 16.4 更新后遇到了一个问题,我们对 getDerivedStateFromProps 逻辑进行了一些重大更改。现在它会在 incoming 和 own 组件的 props 上触发每个组件更新。
所以,我已经阅读了文档和手册,但仍然无法弄清楚表单输入字段应该基于传入道具 (controlled component) 并且同时能够通过以下方式进行修改的情况用户自己的输入?
我也试过这篇文章,但它只涵盖一次性更新的案例,而不是手动输入案例:Why getDerivedStateFromProps is called after setState?
这是我要重现的小代码:
import PropTypes from 'prop-types'
import React from 'react'
export class NameEditor extends React.Component {
static propTypes = {
currentLevel: PropTypes.number
}
static defaultProps = {
currentLevel: 0
}
constructor(props) {
super(props)
this.state = {
currentLevel: 0
}
}
static getDerivedStateFromProps(nextProps) {
return {
currentLevel: nextProps.currentLevel
}
}
_handleInputChange = e => {
this.setState({
currentLevel: e.target.value
})
}
render() {
const { currentLevel } = this.state
return (
<input
placeholder={0}
value={currentLevel}
onChange={this._handleInputChange}
/>
)
}
}
export default NameEditor
【问题讨论】:
标签: javascript reactjs getderivedstatefromprops