2016-06-15 20 views
0

私はredux wizard formsを使用していますが、状態のページ番号に応じてテキストを変更するHEADERというコンポーネントがあります。私は、各ページにヘッダのタイトルプロパティを変更することができますが、私はこのような何かを行うことができますので、私は字幕のプロパティを変更したい:私はupdateComponents(という関数を呼び出すことができると思ったReact Uncaught Reference Error

subtitle={this.state.subtitle } 

を)とswitch文を行います更新されるべき字幕見たがために以下のコードは私にこれを与える:

ReferenceError: updateComponents is not defined. 

私は私が間違ってやっているかわからないんだか、これは状態を更新するための最良の方法である場合。

import React, { Component, PropTypes } from 'react' 
import Step1Page from './step1Page' 
import Step2Page from './step2Page' 
import Step3Page from './step3Page' 
import Header from '../Template/header'; 

class NewSign extends Component { 
    constructor(props) { 
    super(props) 

    this.nextPage = this.nextPage.bind(this) 
    this.previousPage = this.previousPage.bind(this) 
    this.updateComponents = this.updateComponents.bind(this) 
    this.state = { 
     page: 1, 
     subtitle:"Basic Info" 
    } 
    } 

    updateComponents(){ 
    console.log(this.state.page); 
    } 


    nextPage() { 
    this.setState({ page: this.state.page + 1 }) 
    updateComponents(); 
    } 

    previousPage() { 
    this.setState({ page: this.state.page - 1 }) 
    updateComponents(); 
    } 


    render() { 
    const { onSubmit } = this.props 
    const { page } = this.state 
    return (
     <div className="container"> 
      <Header 
      title={"Step " + this.state.page } 
      subtitle="Basic Info" /> 

      {page === 1 && <Step1Page onSubmit={this.nextPage}/>} 
      {page === 2 && <Step2Page previousPage={this.previousPage} onSubmit={this.nextPage}/>} 
      {page === 3 && <Step3Page previousPage={this.previousPage} onSubmit={this.nextPage}/>} 
     </div> 

    ) 
    } 
} 

NewCampaign.propTypes = { 
    onSubmit: PropTypes.func.isRequired 
} 

export default NewSign 
+1

previousPage()およびnextPage()のupdateComponents()をthis.updateComponents()に変更してみてください。私はそれが動作するはずだと思う –

+0

ありがとう、それは働いた! – lost9123193

答えて

1

コードを編集します。 thisステートメントを使用して関数を呼び出す必要があります。

import React, { Component, PropTypes } from 'react' 
import Step1Page from './step1Page' 
import Step2Page from './step2Page' 
import Step3Page from './step3Page' 
import Header from '../Template/header'; 

class NewSign extends Component { 
    constructor(props) { 
    super(props) 

    this.nextPage = this.nextPage.bind(this) 
    this.previousPage = this.previousPage.bind(this) 
    this.updateComponents = this.updateComponents.bind(this) 
    this.state = { 
     page: 1, 
     subtitle:"Basic Info" 
    } 
    } 

    updateComponents(){ 
    console.log(this.state.page); 
    } 


    nextPage() { 
    this.setState({ page: this.state.page + 1 }) 
    this.updateComponents(); 
    } 

    previousPage() { 
    this.setState({ page: this.state.page - 1 }) 
    this.updateComponents(); 
    } 


    render() { 
    const { onSubmit } = this.props 
    const { page } = this.state 
    return (
     <div className="container"> 
      <Header 
      title={"Step " + this.state.page } 
      subtitle="Basic Info" /> 

      {page === 1 && <Step1Page onSubmit={this.nextPage}/>} 
      {page === 2 && <Step2Page previousPage={this.previousPage} onSubmit={this.nextPage}/>} 
      {page === 3 && <Step3Page previousPage={this.previousPage} onSubmit={this.nextPage}/>} 
     </div> 

    ) 
    } 
} 

NewCampaign.propTypes = { 
    onSubmit: PropTypes.func.isRequired 
} 

export default NewSign 
関連する問題