相关疑难解决方法(0)

如何避免render方法中的bind或inline箭头函数

我们应该避免在render内部绑定方法,因为在重新渲染期间它将创建新方法而不是使用旧方法,这将影响性能.

所以对于这样的场景:

<input onChange = { this._handleChange.bind(this) } ...../>
Run Code Online (Sandbox Code Playgroud)

我们可以_handleChange在构造函数中绑定方法:

this._handleChange = this._handleChange.bind(this);
Run Code Online (Sandbox Code Playgroud)

或者我们可以使用属性初始化器语法:

_handleChange = () => {....}
Run Code Online (Sandbox Code Playgroud)

现在让我们考虑一下我们想要传递一些额外参数的情况,让我们说在一个简单的待办事项应用中,点击项目我需要从数组中删除项目,因为我需要传递每个项目索引或待办事项名称onClick方法:

todos.map(el => <div key={el} onClick={this._deleteTodo.bind(this, el)}> {el} </div>)
Run Code Online (Sandbox Code Playgroud)

现在假设todo名称是唯一的.

根据DOC:

此语法的问题是每次组件呈现时都会创建不同的回调.

题:

如何在render方法中避免这种绑定方式或者这有什么替代方法?

请提供任何参考或示例,谢谢.

javascript reactjs

21
推荐指数
2
解决办法
6869
查看次数

如何在反应中访问按钮类型 mui ListItem 的名称

我创建了一个 Material-ui 列表,其中每个 ListItem 都是一个按钮,但是当我尝试访问按钮的 name 属性时,它给出了未定义。

import React from 'react';
import LoginFront from './login/loginFront';
import {BrowserRouter, Route} from 'react-router-dom';
import {List, ListItem, ListItemText} from '@material-ui/core';

class App extends React.Component {
  render(){
    return(
      <List component='nav'>
        <ListItem button name='bName' onClick={event => console.log(event.target.name)} />
        <ListItemText primary='item1' />
      </List>
    )
  }
}
export default App;
Run Code Online (Sandbox Code Playgroud)

console.log(event.target.name)给出undefined

reactjs material-ui

2
推荐指数
1
解决办法
1494
查看次数

标签 统计

reactjs ×2

javascript ×1

material-ui ×1