亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將單擊項目的索引移動到不是父項的另一個組件?

如何將單擊項目的索引移動到不是父項的另一個組件?

狐的傳說 2021-06-29 01:33:46
預期效果:點擊<li>--> 獲取索引 --> 將此索引發送到組件Watch。當我單擊 時<li>,我抓取索引并將其移動到Watch組件。但是,當我單擊第二個時,li它會返回我第一次單擊的索引。我認為這是因為它通過componentDidMount. 之后如何引用此索引componentDidMount?去做class Todo extends Component {      render () {        return (          <div className = "itemTodos" onClick={()=> this.props.selectTodo(this.props.index)}>          </div>        )      }     }    export default Todo;應用程序class App extends Component {  constructor(){    super();    this.state {      selectedTodoIndex: index    }  }  selectTodo = (index) => {    this.setState({      selectedTodoIndex: index    })  }  render () {    return (      <div>           <ul>      {        this.state.todos          .map((todo, index) =>            <Todo              key={index}              index={index}              todo={todo}              selectTodo ={this.selectTodo}            />          )      }    </ul>          <Watch            selectedTodoIndex = {selectedTodoIndex}          />      </div>    )  } }export default App;手表class Watch extends Component {  constructor(){    super();    this.state = {      selectIndex: null    }  } componentDidMount() {    this.setState({      selectIndex:  this.props.selectedTodo    }); }  render () {    return (      <div>      </div>    )  } }
查看完整描述

3 回答

?
小怪獸愛吃肉

TA貢獻1852條經驗 獲得超1個贊

如果我沒有錯,你的 Todo 組件正在監視中??。所以Watch組件應該是這樣的:


render () {

    return (

      <div>

       <Todo index={this.state.selectedIndex} selectedTodo={this.props.selectedTodoIndex}/>

      </div>

    )

  } 

在這里,我制作了這段代碼的代碼和盒子。請隨時結帳,如果您有任何疑問,請告訴我。代碼鏈接:https : //codesandbox.io/s/frosty-chaplygin-ws1zz


查看完整回答
反對 回復 2021-07-01
?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

有很多改進要做。但我相信您正在尋找的是Watch Component 中的getDerivedStateFromProps lifeCycle 方法。所以代碼將是:


getDerivedStateFromProps(nextProps, prevState) {

  if(nextProps.selectedTodoIndex !== prevState.selectedTodoIndex) {

    return { selectIndex: nextProps.selectedTodoIndex }

  }

}

這將檢查 App 組件中選定的索引是否已更改,如果是,它將更新 Watch 組件中的狀態。


查看完整回答
反對 回復 2021-07-01
  • 3 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號