2017-04-02 80 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這一個:)我知道你非常習慣跟隨你的答案,所以:) –

相關問題