当前位置: 首页 > 面试题库 >

举例说明如何在React创建一个事件

岳均
2023-03-14
本文向大家介绍举例说明如何在React创建一个事件相关面试题,主要包含被问及举例说明如何在React创建一个事件时的应答技巧和注意事项,需要的朋友参考一下

楼上的兄弟,帮你格式化一下代码,看的难受

import React, { Component } from 'react';
import ReactDOM from 'react-dom';
var EventEmitter = require('events').EventEmitter;
let emitter = new EventEmitter();

class ListItem extends Component {
  static defaultProps = {
    checked: false
  };
  constructor(props) {
    super(props);
  }
  render () {
    return (
      <li>
        <input type="checkbox" checked={this.props.checked} onChange={this.props.onChange} />
        <span>{this.props.value}</span>
      </li>
    );
  }
}

class List extends Component {
  constructor(props) {
    super(props);

    this.state = {
      list: this.props.list.map(entry => ({
        text: entry.text,
        checked: entry.checked || false
      }))
    };
    console.log(this.state);
  }

  onItemChange (entry) {
    const { list } = this.state;
    this.setState({
      list: list.map(prevEntry => ({
        text: prevEntry.text,
        checked: prevEntry.text === entry.text ? !prevEntry.checked : prevEntry.checked
      }))
    });
    //这里触发事件
    emitter.emit('ItemChange', entry);
  }
  render () {
    return (
      <div>
        <ul>
          {this.state.list.map((entry, index) => {
            return (
              <ListItem
                key={`list - ${index}`}
                value={entry.text}
                checked={entry.checked}
                onChange={this.onItemChange.bind(this, entry)} />
            );
          })}
        </ul>
      </div>
    );
  }
}

class App extends Component {
  constructor(props) {
    super(props);
  }
  componentDidMount () {
    this.itemChange = emitter.addListener('ItemChange', (msg, data) => console.log(msg));//注册事件
  }
  componentWillUnmount () {
    emitter.removeListener(this.itemChange);//取消事件
  }
  render () {
    return (
      <List list={[{ text: 1 }, { text: 2 }]} />
    )
  }
}

ReactDOM.render(
  <App />,
  document.getElementById('root')
);
 类似资料:
  • 本文向大家介绍举例说明如何使用WebSQL?相关面试题,主要包含被问及举例说明如何使用WebSQL?时的应答技巧和注意事项,需要的朋友参考一下

  • 本文向大家介绍举例说明useState相关面试题,主要包含被问及举例说明useState时的应答技巧和注意事项,需要的朋友参考一下

  • Spring注入有四种方式, set注入; 构造器注入; 基于注解的注入; xml配置文件注入; 想要注入java collection,就是注入集合类: list set map props:该标签支持注入键和值都是字符串类型的键值对。 list和set都使用value标签;map使用entry标签;props使用prop标签;

  • 本文向大家介绍怎样在react中创建一个事件?相关面试题,主要包含被问及怎样在react中创建一个事件?时的应答技巧和注意事项,需要的朋友参考一下 var EventEmitter = require('events').EventEmitter; class App extends Component{ constructor(props){ super(props); } componentD

  •   生成器是一种返回可迭代对象的函数。 Generator 函数必须至少包含一个 yield 语句。 yield 是 Python 中的一个关键字,用于从函数返回值而不破坏其当前状态或对局部变量的引用。 带有 yield 关键字的函数称为生成器。   生成器仅在被要求执行时生成一次项目。 它们的内存效率很高,占用的内存空间更少。   初学者,可以把yield理解为return的另一种形式, 但是它

  • 本文向大家介绍举例说明js鼠标事件有哪些?相关面试题,主要包含被问及举例说明js鼠标事件有哪些?时的应答技巧和注意事项,需要的朋友参考一下 click 单击 dblclick 双击 mousedown 鼠标按下 mouseup 鼠标松开 mouseover 鼠标悬浮 mouseout 鼠标离开 mousemove 鼠标移动 mouseenter 鼠标进入 mouseleave 鼠标离开