Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果同时存在组件willreceiveprops和onSubmit,我们希望优先考虑onSubmit_Javascript_Reactjs - Fatal编程技术网

Javascript 如果同时存在组件willreceiveprops和onSubmit,我们希望优先考虑onSubmit

Javascript 如果同时存在组件willreceiveprops和onSubmit,我们希望优先考虑onSubmit,javascript,reactjs,Javascript,Reactjs,当我按下表单上的按钮时,onSubmit起作用,但同时componentWillReceiveProps也起作用,componentWillReceiveProps中的setState优先 我想优先考虑onSubmit的设置状态,而不是componentWillReceiveProps,最好的方法是什么 如果你知道更多,请告诉我 componentWillReceiveProps(nextProps) { this.setState({ title: ne

当我按下表单上的按钮时,onSubmit起作用,但同时componentWillReceiveProps也起作用,componentWillReceiveProps中的setState优先

我想优先考虑onSubmit的设置状态,而不是componentWillReceiveProps,最好的方法是什么

如果你知道更多,请告诉我

componentWillReceiveProps(nextProps) {
        this.setState({
            title: nextProps.title,
        });
    }

您可以使用
Hooks

const [title, setTitle] = useState()

const handleChangeTitle = e => {
  setTitle(e.target.value)
}

const handleSubmit = event => {
  alert(title)
  event.preventDefault()
}
render()中


标题:

别忘了导入它:
import-React,{useState}来自'React'

是否仍要执行这两个命令?一个接一个?我想在按下onSubmit时禁用componentWillReceiveProps。您可能正在处理反模式。请参阅“一个常见的误解是,getDerivedStateFromProps和componentWillReceiveProps仅在props“更改”时调用。也许,在更新组件WillReceiveProps中的状态之前,您应该检查
if(nextrops.title!==this.props.title)
。希望这有帮助。我正在使用
onChange=(e)=>this.setState({[e.target.name]:e.target.value});
在输入时响应的不仅仅是标题。
const [title, setTitle] = useState()

const handleChangeTitle = e => {
  setTitle(e.target.value)
}

const handleSubmit = event => {
  alert(title)
  event.preventDefault()
}
<form onSubmit={handleSubmit}>
    Title:
    <input
      type="text"
      value={title}
      onChange={handleChangeTitle}
    />
</form>