2017-03-06 83 views
0

我想將數據從一個組件傳遞到另一個組件。但它沒有親子關係,並且彼此獨立。我能夠設置狀態,但問題是在點擊輸入我的文本數據被清除後。不知道爲什麼,爲什麼TextBox提交後提交reactjs

export class EmpSearch extends React.Component { 
    // Not needed anymore as state going to Redux and not local component state 
/* 
    constructor(props) { 
    super(props); 
    this.state = { 
     Empnumber: '' 
    }; 
    } 
*/ 
EmpSearch = (e) => {  
if (e.key === 'Enter') { 
    browserHistory.push('/Emp/' + e.target.value); 
} 
} 

updateEmpNumber(e) { 

    this.props.dispatch({ 
      type: 'UPDATE_EMP_NUMBER', 
      payload: e.target.value 
     }); 
} 

render() { 
return (
    <div className="row"> 
    <form> 
     <div className="form-group"> 
     <label htmlFor="Empnumber">Emp Number</label> 
     <input type="text" className="form-control" id="Empnumber" placeholder="Emp Number" value={this.props.Empnumber} onChange={this.updateEmpNumber.bind(this)} onKeyPress={this.EmpSearch}/> 
     </div> 
    </form> 
    </div> 
); 
} 
} 
function mapStateToProps(state){ 
return { 
    Empnumber: state.Empnumber 
} 
} 

export default connect(mapStateToProps)(EmpSearch); 
+0

因此,當你點擊'輸入'你的數據被清除?或者當你嘗試在輸入框中輸入內容時? –

+0

當我點擊'輸入'值清除.. – user2768132

回答

0

browserHistory.push('/Emp/' + e.target.value);可能導致您的組件被卸載和重新安裝。 你說這個值存儲在redux狀態,但是我看不到你在哪裏更新了redux狀態。

+0

值存儲在REDX和你我已經更新了上面的代碼。所以如果browserhistory.push有問題,那麼我應該用什麼來代替這個? – user2768132

+0

好吧,我明白了。不知道這裏發生了什麼樣的比賽情況。 使用''會不會更容易?回車鍵將觸發表單提交事件。 – Tom