我下面這個教程React Tutorialthis.props.createTask沒有定義
這裏是東西: 我從創建-todo.js調用函數的CreateTask; 的功能在app.js
定義app.js
import React from 'react';
import ToDosList from './todos-list';
import CreateToDoItem from './create-todo-item'
const todoitems=[
{
task: 'finish react todo tutorial',
isCompleted: false
},
{
task: 'eat lunch',
isCompleted: true
}
];
export default class App extends React.Component
{
constructor(props){
super(props)
this.state={
todoitems
};
}
render()
{
return(
<div>
<h1>React Demo App - ToDos </h1>
<CreateToDoItem createtask ={this.createTask.bind(this)}/>
<ToDosList
todoitems={this.state.todoitems}
/>
</div>
);
}
createTask(task)
{
//alert('called');
this.state.todoitems.push({
task,
isCompleted:false
});
this.setState({todoitems: this.state.todoitems});
}
}
創建-todo.js
import React from 'react';
import App from './app';
export default class CreateToDoItem extends React.Component
{
render()
{
return(
<form onSubmit={this.handleCreate.bind(this)}>
<input type="text" placeholder="what do I need to do?" ref="createInput"/>
<button>Create</button>
</form>
);
}
handleCreate(event)
{
event.preventDefault();
//alert('called');
this.props.createTask(this.refs.createInput.value); //this throws error
}
}
我絕對新React.js。我不知道這是如何工作的。該函數是否可用於create-todo.js?代碼就是它在教程中的顯示方式。
** **錯字,用'createtask'不是'createTask',就像這樣:'this.props.createtask()',因爲你在'props'中通過'createtask'鍵和實際的函數名是'createTask'。 –
謝謝bhai ...!把它作爲答案。 – adityawho