2017-08-25 63 views
-1

Header.jsthis.props.createNewBook不是一個函數。如何添加新的道具?

class header extends React.component { 
{ 
    render(
<CreateBook bookType= { createBookType } closeModal= { this.closeModal } /> 
) 
} 
} 

CreateBook.js

class CreateBook extends React.Compoent { 
     showResult() { 
     const errors = this.validate(); 
     if (errors.length === 0) { 
      this.props.createNewBook(JSON.stringify(this.state.model)); 
     } else { 
      this.setState({ 
      errorList: errors, 
      }); 
     } 
     } 


    render() { 
    console.log(this.props) 
    return (
. 
. 
. 
<Button id= "save" onClick= {() => this.showResult() 
    }> Save </Button > 
} 
CreateBook.propTypes = { 
    createNewBook: PropTypes.func, 
    bookType: PropTypes.string.isRequired, 
    closeModal: PropTypes.func, 
}; 

現在,我創建了具有

const mapDispatchToProps = (dispatch) => ({ 
     createNewBook: (data) => dispatch(createBookAction(data)), 
    }); 

export default connect(null, mapDispatchToProps)(CreateBook); 

在上面的代碼的容器,我不能讓createNewBook道具價值。所以,我不能調用dipatch函數。

當我試圖獲取日誌時,我只能獲取bookType和closeModal。

請幫我解決這個問題。

+2

FYI,JavaScript是大小寫敏感的,並且它不僅要求的情況下是正確的,但變量和函數名稱以及 – adeneo

+0

上面的代碼是一個樣本。我在原始代碼中正確處理了案件。但我仍然遇到同樣的問題。 – vvv

+0

您是否導入'createBookAction'? – nbkhope

回答

0

你在showResult中使用了「this」,你需要在構造函數中綁定它。

this.showResult = this.showResult.bind(本)

相關問題