2017-04-25 66 views
0

在下面的一個項目中加入(交互)Redux與flux是否是一個很好的解決方案? 狀態(inputText)位於我們的組件(TOdoInput)中,不在應存儲在Redux中的狀態。在Redux中擁有本地狀態是否正確?將React flux與redux結合

class TodoInput extends Component { 

    constructor(props, context) { 
    super(props, context) 
    this.state = { 
     inputText: '' 
    } 
    } 

    handleChange(event) { 
    this.setState({ 
     inputText: event.target.value 
    }) 
    } 

    handleSubmit(event) { 
    event.preventDefault() 
    this.props.addTodo(this.state.inputText) 
    } 

    render() { 
    return (
     <div> 
     <form onSubmit={this.handleSubmit.bind(this)}> 
      <input 
      type="text" 
      placeholder="Type in your todo" 
      value={this.state.inputText} 
      onChange={this.handleChange.bind(this)} 
      /> 
      <input type="submit" value="Submit"/> 
     </form> 
     </div> 
    ) 
    } 
+0

Flux指的是一種特定的數據模式,它居住在涉及商店和動作創建者的React之外。 http://blog.andrewray.me/flux-for-stupid-people/你只是使用組件狀態,你可以調用狀態:) –

回答

0

是的,它是正確的。

本地(組件狀態)與全局狀態(還原器)是一個值得關注的問題。

例如採取其顯示用戶信息

  • 甲標籤欄應該知道哪個標籤是有活性的標籤欄的組成部分。沒有其他組件在意,所以它可能是用this.state處理的本地組件狀態。
  • 另一方面,該選項卡的用戶信息是全球關注的問題。事實上,很多你的組件應用程序應該有興趣顯示名稱,年齡等。所以這個狀態應該存儲在一個reducer中。

您的TodoInput的主要作用是準備要發送給reducer的文本。所以輸入值在用戶輸入時纔是重要的。

  • 可以格式化文本
  • 你可以要求服務是有一個錯字
  • ...

一旦確認文本是與你的關心OK應用程序,你驗證它。在這一步,你的關注值更改。現在它可以被其他組件消耗的價值。所以它必須存儲在全球商店(redux reducer)中。

+0

但在這種情況下(取輸入值)這是一個很好的解決方案,是? – Lukas

+0

我編輯了我的答案 – dagatsoin