2017-04-02 140 views
1

我正在使用NodeJS。无法在React中输入InputType'文本'

这是我在coursePage.js中的组件。问题是,当我运行它时,我无法输入我的InputType,尽管我在代码中看不到任何错误(控制台也没有显示任何东西)。

import React , {PropTypes} from 'react'; 
import {connect} from 'react-redux'; 
import * as courseActions from '../../actions/courseActions'; 

class coursesPage extends React.Component{ 

    constructor(props, context) { 
    super(props, context); 

    this.state = { 
     course: {title: ""} 
    }; 

    this.onTitleChange= this.onTitleChange.bind(this); 
    this.onClickSave= this.onClickSave.bind(this); 
    } 

    onTitleChange(event){ 
    const course = this.state.course; 
    course.title = event.target.value; 
    this.setState=({course: course}); 
    } 

    onClickSave(){ 
    this.props.dispatch(courseActions.createCourse(this.state.course)); 
    } 
    courseRow(course,index){ 
    return <div key = {index}>{course.title}</div>; 
    } 

    render(){ 
    return(
     <div> 
     <h1>Courses</h1> 
     {this.props.courses.map(this.courseRow)} 
     <h2>Add Course</h2> 
     <input 
      type="text" 
      onChange={this.onTitleChange} 
      value={this.state.course.title}/> 

     <input 
      type="submit" 
      value="Save" 
      onClick={this.onClickSave}/> 
     </div> 
    ); 
    } 
} 
coursesPage.propTypes = { 
    dispatch: PropTypes.func.isRequired, 
    courses: PropTypes.array.isRequired 
}; 

function mapStateToProps(state, ownProps){ 
    return{ 
    courses : state.courses 
    }; 

} 
export default connect(mapStateToProps)(coursesPage); 
+4

'setState'后面可能出错'='char。 'this.setState =({course:course});'应该只是'this.setState({course:course});' – Artin

+0

非常感谢! – Tal

回答

1

这个setState就像一个函数,所以你使用'='也许是错误的。

0

问题是,你是在一个错误的方式更新state值,试试这个:

const course = this.state.course; 
course.title = event.target.value; 
this.setState({course}); 

要更新state价值,我们需要传递一个objectsetState,而不是分配object;

+0

为什么downvote,现在我的答案有什么错,谁downvoting请提供一个理由,我不是一个专家:),我认为这需要提供名称也是谁投下了答案,以便我们可以问那家伙,downvote的原因。如果你认为任何人的回答不好,或者需要写出评论或写出自己的答案,那么每个人都可以学到一些东西,而不是只是低调地回答他人的答案,并且默默地坐着。 –

+0

setState({course})和setState({course:course})是同一件事情,几乎没有区别。澄清,我不是谁downvoted –

+0

@ShubhamKhatri他正在使用'this.setState =({})',检查他的问题,我建议他'setState({})'一个小额外的变化,btw我didn不要说为什么你投我的答案:),我是在问这个问题的原因,无论谁是downvoted这一个:)我知道你非常习惯跟随你的答案,所以:) –

相关问题