Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.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
Reactjs React.js是否有类似于Vue.js的修改器;v型。懒惰“;_Reactjs_Vue.js - Fatal编程技术网

Reactjs React.js是否有类似于Vue.js的修改器;v型。懒惰“;

Reactjs React.js是否有类似于Vue.js的修改器;v型。懒惰“;,reactjs,vue.js,Reactjs,Vue.js,在Vue.js中: 默认情况下,v-model会在每个输入事件后将输入与数据同步(上述IME合成除外)。您可以添加延迟修改器,以在更改事件后进行同步: <!-- synced after "change" instead of "input" --> <input v-model.lazy="msg" > react是否具有类似的修改器或功能?在官方文档的哪个部分?以下内容来自Vue文档中的v-model: 尽管有点神奇,v-model本质上是糖的语法 更新用户输入

在Vue.js中:

默认情况下,v-model会在每个输入事件后将输入与数据同步(上述IME合成除外)。您可以添加延迟修改器,以在更改事件后进行同步:

<!-- synced after "change" instead of "input" -->
<input v-model.lazy="msg" >


react是否具有类似的修改器或功能?在官方文档的哪个部分?

以下内容来自Vue文档中的
v-model

尽管有点神奇,v-model本质上是糖的语法 更新用户输入事件的数据

在React中,您可以监听任何输入事件(
onChange
onClick
,等等),并触发更新React组件的
状态的函数。如果要向下传递数据,可以将其作为
props
传递给任何子级。通过这种方式,我们可以使用输入事件更新数据。有关更多信息,请参见和

Vue.js中的将在DOM的更改事件上同步,而不是在输入上同步。DOM的更改事件发生在各种情况下,具体取决于所使用的表单元素。单击复选框或单选按钮将触发更改事件。输入文本框在失去焦点时将触发更改事件。不同的浏览器可能不会在相同的交互上触发更改事件

然而,React的onChange与DOM中的onChange工作方式不同:它更像DOM的onInput。与DOM的更改事件相反,当表单的任何输入元素发生更改时,React的onChange将触发

在React.js中,如果希望具有与Vue.js'
v-model.lazy
类似的行为,则需要将事件处理程序绑定到不同的事件

关于您的示例,在Vue.js中,我们有:

<!-- synced after "change" instead of "input" -->
<input v-model.lazy="msg" >

在React.js中,我们不能使用onChange,因为onChange处理程序在每次按键时都会被触发,而不仅仅是在整个输入字段发生更改时。React.js的onChange不是“懒惰的”:-)相反,您可以使用它的事件:

类MyComponent扩展了React.Component{ 建造师(道具){ 超级(道具) 此.state={ 消息:“” } } 车把(活动){ this.setState({msg:event.target.value}); } render(){ 返回 您的消息:{this.state.msg}

} });
这是JSFIDLE上的示例。

onChange(在React中)将完全执行VueJS中v-model的操作

Vue

React
setRecord(e.target.value)}/>

您可以在输入字段上使用onBlur事件,以实现与VueJS中的v-model.lazy类似的功能

Vue

React
setRecord(e.target.value)}/>

class MyComponent extends React.Component {
  constructor(props) {
    super(props)
    this.state = {
      msg: ''
    }
  }
  handleBlur(event) {
    this.setState({msg: event.target.value});
  }
  render() {
    return <div>
      <input type="text" onBlur={this.handleBlur.bind(this)}/>
      <p>Your message: {this.state.msg}</p>
    </div>
  }
});