2016-09-30 79 views
0

我剛開始使用的反應,我有以下此登錄模型組件:React- HTTP請求射擊頁面加載

export default class LoginModal extends Component { 

    constructor() { 
    super(); 
    this.render.bind(this); 
    this.state = {showModal: false} 
    } 

    close() { 
    this.setState({ showModal: false }); 
    } 

    open() { 
    this.setState({ showModal: true }); 
    } 

    login() { 
    console.log("Hello. It's Me") 
    axios.post('https://crossorigin.me/http://requestb.in/w21igbw2', { 
     firstName: 'Fred', 
     lastName: 'Flintstone' 
    }) 
    .then(function (response) { 
     console.log(response); 
     //this.setState({ showModal: false }); 
    }) 
    .catch(function (error) { 
     console.log(error); 
    }); 
    } 

    handleSelect(eventKey) { 
    event.preventDefault(); 
    alert(`selected ${eventKey}`); 
    } 

模式本身我有<Button onClick={this.login()} bsStyle="btn btn-black btn-block">Login</Button>,但login()功能一旦頁面加載而不是單擊按鈕時觸發。我是否以正確的方式做這件事?這些代碼中的大部分都是由一位有更多反應經驗的同事編寫的,所以我可能會將登錄功能完全放在錯誤的地方。如果是這樣,請讓我知道函數應該在哪裏。

+2

我的猜測是,你把它當作'{this.login()}'而不是'{this.login}',有效立即調用它而不是傳遞引用,但沒有看到你的'render'方法只是一個猜測。 – ivarni

+0

就是這樣,現在有點工作,除了我剛剛意識到它發送的請求是一個獲取請求而不是一個帖子。 – jmona789

+0

那將是一個關於axios的問題。不幸的是,我對這個圖書館一無所知。 – ivarni

回答

1

this.login()應給出this.loginonClick()處理

<Button onClick={this.login} bsStyle="btn btn-black btn-block">Login</Button>