我在React上编写了我的第一个Todo应用程序。
我收到TypeError:props.handleToggle不是一个函数
 并且不知道为什么?(另一个处理程序正在工作)。
为什么此功能不能成为功能?我在做什么错以及需要阅读什么?

App.js

import React, { Component } from 'react';
import {TodoForm, TodoList} from './components/todo'
import {addTodo, generateId, findById, toggleTodo, updateTodo} from    './lib/todoHelpers'

class App extends Component {
  state = {
    todos: [
      {id: 1, name: 'Hello buddy', isComplete: true},
      {id: 2, name: 'Hello rarrih', isComplete: false}
    ],
    currentTodo: ''
  }

  handleToggle = (id) => {
    const todo = findById(id, this.state.todos)
    const toggled = toggleTodo(todo)
    const updatedTodos = updateTodo(this.state.todos, toggled)
    this.setState({todos: updatedTodos})
  }

  render(){
    const submitHandler = this.state.currentTodo ? this.handleSubmit : this.handleEmptySubmit
    return (
      <div className="App">
        <div className="App-header">
          <img src={logo} className="App-logo" alt="logo" />
          <h1 className="App-title">Todo</h1>
        </div>

        <div className="Todo-App">
          {this.state.errorMessage && <span className='error'>{this.state.errorMessage}</span>}
          <TodoForm handleInputChange={this.handleInputChange}
            currentTodo={this.state.currentTodo}
            handleSubmit={submitHandler}/>

          <TodoList handleToggle={this.handleToggle} todos={this.state.todos}/>
        </div>
      </div>
    );
  }
}

export default App;


TodoList.js

import React from 'react'
import {TodoItem} from './TodoItem'
import PropTypes from 'prop-types'

export const TodoList = (props) => {
  return (
    <div className="Todo=List">
      <ul>
        {props.todos.map(todo => <TodoItem handleToggle={props.handleTooggle} key={todo.id} {...todo}/>)}
      </ul>
    </div>
  )
}


TodoItem.js

//TodoItem
export const TodoItem = (props) => {
  const handleToggle = props.handleToggle(props.id)
  return (
    <li>
      <input type="checkbox" onChange={handleToggle}
       checked={props.isComplete}/> {props.name}
    </li>
  )
}


我收到TypeError:props.handleToggle不是一个函数
 并且不知道为什么?(另一个处理程序正在工作)。
为什么此功能不能成为功能?我在做什么错以及需要阅读什么?

最佳答案

您在TodoList.js中输入了错误,将其道具名称handleToggle传递给它,并尝试使用handleTooggle

这是一个正确的变体:

export const TodoList = (props) => {
  return (
    <div className="Todo=List">
      <ul>
        {props.todos.map(todo => <TodoItem handleToggle={props.handleToggle} key={todo.id} {...todo}/>)}
      </ul>
    </div>
  )
}

关于javascript - TypeError:props.handleToggle不是函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50064838/

10-12 03:25