如何从材质 UI 按钮组件访问主类功能?

Wonderio619

我想handleKeyPress()从 AddButton.js 文件中的 ToDo.js 文件调用函数onClick()为 Material UI 中的按钮设置操作可能我应该以某种不同的方式为按钮设置 onClick 操作?但是任何类型的导入/导出声明对我都不起作用。我想了解一些函数访问规则,我是 JS 新手)请告诉我这里有什么问题。

添加按钮.js

import React from 'react';
import PropTypes from 'prop-types';
import { withStyles } from '@material-ui/core/styles';
import Button from '@material-ui/core/Button';
import AddIcon from '@material-ui/icons/Add';
import {handleKey} from '../ToDo';

const styles = theme => ({
  button: {
    margin: theme.spacing.unit,
  },
});

function FloatingActionButtons(props) {
  const { classes } = props;
  return (
    <div>
      <Button variant="fab" color="primary" aria-label="Add" className={classes.button} onClick={() => (handleKey)}>
        <AddIcon />
      </Button>
    </div>
  );
}

FloatingActionButtons.propTypes = {
  classes: PropTypes.object.isRequired,
};

export default withStyles(styles)(FloatingActionButtons);

待办事项

import React, {Component} from 'react';
import './ToDo.css';
import ToDoItem from './components/ToDoItem';
import AppBar from './components/AppBar';
import AddButton from './components/AddButton';
import Logo from './assets/logo.png';

const appBar = <AppBar />
const addButton = <AddButton />

class ToDo extends Component {
    constructor(props) {
        super(props);
        this.state = {
            list: [
                {
                    title: 'Cup cleaning',
                    todo: "Wash and take away the Kurzhiy's cup from WC"
                },
                {
                    title: 'Smoking rollton',
                    todo: 'Do some rollton and cigarettes'
                },
                {
                    title: 'Curious dream',
                    todo: 'Build a time machine'
                }
            ],
            title: '',
            todo: ''
        };
    };

    createNewToDoItem = () => {
      this.setState(({ list, title, todo }) => ({
        list: [
            ...list,
          {
            title,  
            todo
          }
        ],
        title: '',
        todo: ''
      }));
    };

    handleKeyPress = e => {
        if (e.target.value !== '') {
          if (e.key === 'Enter') {
            this.createNewToDoItem();
          }

        }
    };

    handleTitleInput = e => {
      this.setState({
        title: e.target.value,
      });
    };

    handleTodoInput = e => {
        this.setState({
         todo: e.target.value
      });
    };

    deleteItem = indexToDelete => {
        this.setState(({ list }) => ({
          list: list.filter((toDo, index) => index !== indexToDelete)
      }));
    };

    editItem = (i, updTitle, updToDo) => {
        let arr = this.state.list;
        arr[i].title = updTitle;
        arr[i].todo = updToDo;
        this.setState ({list: arr});
    };

    eachToDo = (item, i) => {
        return <ToDoItem
                    key={i}
                    title={item.title}
                    todo={item.todo}
                    deleteItem={this.deleteItem.bind(this, i)}
                    editItem={this.editItem.bind(this, i)}
                />
      };

    render() {
        return (
            <div className="ToDo">
                <img className="Logo" src={Logo} alt="React logo"/>
                <h1 className="ToDo-Header">{appBar}</h1>
                <div className="ToDo-Container">

                    <div className="ToDo-Content">
                        {this.state.list.map(this.eachToDo)}
                    </div>

                    <div>
                       <input type="text" placeholder="Enter new title" value={this.state.title} onChange={this.handleTitleInput} onKeyPress={this.handleKeyPress}/>
                       <input type="text" placeholder="Enter new todo" value={this.state.todo} onChange={this.handleTodoInput} onKeyPress={this.handleKeyPress}/>
                       <button className="ToDo-Add" onClick={this.createNewToDoItem}>+</button>
                       <p>{addButton}</p>
                    </div>
                </div>
            </div>
        );
    }
}

export default ToDo;
export const handleKey = this.handleKeyPress;
console.log(handleKey)
马雷克·潘蒂

您使用 this 指的是属性或方法而不是变量,因此您根本不应该在这里使用 this。其次,您必须首先将 handleKeyPress 方法导入到您的文件中才能访问它,您确定该方法在const { classes } = props;此处吗?如果是,那么您应该将 onclick={handleKeyPress()} 指向一个函数,没有必要创建一个返回函数 { classes} 而不是道具的箭头函数,那么它应该可以工作

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在主类中导入材质 UI 组件?

来自分类Dev

如何为材质ui凸起按钮组件添加ID?

来自分类Dev

如何在材质UI按钮的角落放置图标

来自分类Dev

使材质UI容器组件响应

来自分类Dev

材质UI按钮中的图标

来自分类Dev

材质UI嵌套类覆盖

来自分类Dev

如何隐藏材质按钮?

来自分类Dev

如何有条件地为材质ui TreeView组件设置扩展道具

来自分类Dev

如何在材质UI makeStyles中应用字体功能设置并通过props动态更改backgorundColor

来自分类Dev

如何将“材质”按钮与其他UI元素对齐

来自分类Dev

如何从“平面”或“凸起”按钮元素触发“材质UI日期选择器”元素

来自分类Dev

如何在材质UI的DateTimePicker中添加一个按钮?

来自分类Dev

如何在材质ui手风琴上使用按钮折叠?

来自分类Dev

如何将“材质”按钮与其他UI元素对齐

来自分类Dev

ui的SelectField材质如何更改菜单的宽度

来自分类Dev

如何更改KeyboardDatePicker材质ui的语言?

来自分类Dev

如何对材质UI模板使用从右到左的选项?

来自分类Dev

如何添加偏移材质-UI Grid

来自分类Dev

webpack无法解析子组件中的材质ui按钮

来自分类Dev

材质ui选择组件下拉定位

来自分类Dev

材质UI组件未返回HTMLElement参考

来自分类Dev

材质UI按钮删除焦点框架

来自分类Dev

材质UI抽屉中的按钮导航

来自分类Dev

在材质UI按钮内对齐图标

来自分类Dev

在材质UI按钮内对齐图标

来自分类Dev

如何在reactjs(16.13.0)代码中为自定义材质ui组件执行适当的重定向?

来自分类Dev

如何在临时抽屉材质UI中使用字符串名称指定按钮图标

来自分类Dev

如何创建Android材质设计UI小部件?

来自分类Dev

如何材质UI印刷术的更改颜色?

Related 相关文章

热门标签

归档