美文网首页
Vue&React事件处理

Vue&React事件处理

作者: 睦月MTK | 来源:发表于2020-05-12 16:45 被阅读0次

声明:


事件处理的方式

当子组件不足以处理某个事件时,事件处理有如下两种方式:

  • 将事件抛给父组件,让其处理
    这是Vue的标准处理方式
  • 调用父组件给的处理器进行处理
    这是React的标准处理方式。Vue也可以实现这种处理方式,但是那样就丢掉了众多与此相关的常用指令

抛出式处理方式(Vue示例)
  • MtkInput.vue(子组件)
<template>
    <input type="text" v-on:input="$emit('input',$event.target.value)"/>
</template>

<script>
class MtkInput {
    constructor(){}
}

export default new MtkInput;
</script>
  • MtkInputText.vue(父组件)
<template>
    <div>
        <p>input:{{inputContent}}</p>
        <mtk-input  v-on:input="handleInput"/>
    </div>
</template>

<script>
import MtkInput from './MtkInput.vue'

class MtkInputText {
    constructor(){
        this.data = this.dataInit
        this.components = {
            'mtk-input' : MtkInput
        }
        this.methods = {
            handleInput : this.handleInput
        }
    }

    handleInput(inputContent){ 
        this.inputContent = inputContent
    }

    dataInit(){
        return {
            inputContent : ''
        }
    }
}

export default new MtkInputText;
</script>

这里子组件MtkInput无法处理input事件,然后向父组件抛出一个input事件,并附上输入的值,父组件MtkInputText监听这个事件然后调用处理器进行处理
Vue还有更加方便的v-model指令,详情可看在组件上使用v-model


处理器式处理方式(React示例)
  • MtkInput.js(子组件)
import React from 'react'

class MtkInput extends React.Component {
    constructor(props){
        super(props)
        this.onInput = this.onInput.bind(this)
    }

    onInput(e){
        this.props.onInput(e.target.value)
    }

    render() {
        return (
            <input type="text" onInput={this.onInput}></input>
        )
    }
}

export default MtkInput;
  • MtkInputText.js(父组件)
import React from 'react'
import MtkInput from './MtkInput'

class MtkInputText extends React.Component {
    constructor(props){
        super(props)
        this.state = {inputContent : ''}
        this.onInputHandle = this.onInputHandle.bind(this)
    }

    onInputHandle(inputContent){
        this.setState(()=>{return {inputContent : inputContent};})
    }

    render(){
        return (
            <div>
                <p>input:{this.state.inputContent}</p>
                <MtkInput onInput={this.onInputHandle}/>
            </div>
        )
    }
}

export default MtkInputText;

这里子组件MtkInput无法处理input事件,但是父组件传入了一个处理器,然后子组件就调用这个处理器来处理事件


参考文档:

相关文章

  • Vue&React事件处理

    声明: 事件处理的方式 当子组件不足以处理某个事件时,事件处理有如下两种方式: 将事件抛给父组件,让其处理这是Vu...

  • Vue&React在Props上的处理

    声明: 1.在Props的传入方式上 Vue: Vue的Props分为两种第一种是在组件内部用props定义过的属...

  • JS 事件

    目录 事件流 事件处理程序HTML事件处理程序DOM0级事件处理程序DOM2级事件处理程序IE事件处理程序跨浏览器...

  • react事件处理

    一,事件处理 写法:on+事件名称= {事件处理函数} 类组件触发写法on+事件名称 = 事件处理函数 ---...

  • 跨浏览器的事件处理程序

    事件处理程序有DOM0级事件处理程序、DOM2级事件处理程序,IE事件处理程序,DOM0级事件处理程序具有简单,跨...

  • App事件中心

    App事件中心,事件的的生产端和处理端分离,事件处理结果广播通知,事件状态(初始化、处理中和处理完成)管理,事件类...

  • Chapter 07. Broadcast

    阅读原文 7.1 . 理论概述 广播事件处理属于系统级的事件处理(一般事件处理是属于View级的事件处理) 一个应...

  • iOS和Flutter里的事件处理

    目录先说一下事件处理里的被处理者:事件一、iOS里的事件二、Flutter里的事件然后说一下事件处理里的处理者:响...

  • react文档——事件处理

    事件处理 React 元素的事件处理和 DOM 元素的事件处理非常相似。但也有一些语法差异: React 事件使用...

  • DOM事件的问题!

    1.事件冒泡 2.事件捕获 事件处理程序 1.HTML事件处理程序 2.DOM 0级事件处理程序 3.DOM 2级...

网友评论

      本文标题:Vue&React事件处理

      本文链接:https://www.haomeiwen.com/subject/wjobnhtx.html