2017-01-09 74 views
1

我很困惑道具或狀態在這裏使用。如果我在@connect中使用狀態,我會收到錯誤並且不起作用。當我使用道具時,它不能與onchange處理程序一起設置新的道具。請幫助我如何使用狀態或道具進行輸入工作。我正在從api中檢索初始數據。我們應該使用狀態還是道具來處理投入反應?

import React, {PropTypes} from 'react'; 
import {bindActionCreators} from 'redux'; 
import {connect} from 'react-redux'; 
import { asyncConnect } from 'redux-async-connect'; 
import {load, isLoaded} from 'redux/modules/overview'; 
@asyncConnect([{ 
promise: ({ store: { dispatch, getState }, params: { id }, }) => { 
    const promises = []; 
    if (!isLoaded(getState())) { 
     promises.push(dispatch(load(id))); 
    } 
    return Promise.all(promises); 
} 
}]) 
@connect(
state => ({ 
    overview: state.overview.data 
}), 
dispatch => bindActionCreators({load}, dispatch)) 
export default class Overview extends React.Component { 
changeinput1(e) { 
    this.props.overview.title = e.target.value; 
    // changing value does not work here 
} 
constructor (props) { 
    super(); 
    this.state = { 
     overview: null, 
    } 
} 
render() { 

    return (
     <div> 
     <label>Input 1</label> 
     <input type="text" className="form-control" id="title" name="title" maxlength="35" value={this.props.overview.title} onChange={this.changeinput1.bind(this)}/> 
     </div> 
    ) 
} 
} 

我也想做驗證,並希望保存onBlur的輸入值,所以我不想使用窗體。

回答

0

,如果你想改變減速機(這裏假設是「概述」)的值,你應該定義一個動作然後派遣它,而不是在組件中直接更改它,狀態從商店得到的是隻讀

+0

我想獲取組件狀態中的縮減器值,但無法使用@connect –

+1

獲取類似於@connect( state =>(this.state.overview:state.overview.data }), dispatch => bindActionCreators({load},dispatch))我想要在組件的狀態概述來操縱它在輸入 –

+0

你應該得到組件的道具的redux狀態,像this.props。概述... – shixukai

相關問題