您好,登錄后才能下訂單哦!
怎么在React中實現一個todolist功能?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
ReactDOM.render( <React.StrictMode> <TodoList /> </React.StrictMode>, document.getElementById('root') );
1、constructor
constructor(props) { super(props); this.state = { inputValue: '', list: [] } }
2、render
render() { return ( <React.Fragment> <div> {/*label標簽的作用,擴大點擊范圍*/} <label htmlFor='insertArea'>輸入內容</label> <input id='insertArea' className={'inputStyle'} value={this.state.inputValue} onChange={event => this.handleInputChangle(event)}/> <button onClick={event => this.handleButtonVlue(event)}>提交</button> <hr/> <ul> {this.getTodoList()} </ul> </div> </React.Fragment> ) }
3、getTodoList
getTodoList() { return ( this.state.list.map((value, index) => { return <TodoItem2 key={index} itemVlue={value} itemIndex={index} itemDelete={this.handleItemDelete.bind(this)}> {/*這塊需要強制綁定為父組件的this,否則在子組件中找不到*/} </TodoItem2> }) ); }
4、事件函數
/** * 監聽輸入框變化 **/ handleInputChangle(e) { const value = e.target.value; this.setState(() => ({ inputValue: value })) } /** * 監聽點擊按鈕 **/ handleButtonVlue(e) { this.setState((prevStatus) => ({ list: [...prevStatus.list, this.state.inputValue], inputValue: '' })) } /** * 監聽點擊item刪除 **/ handleItemDelete(index) { this.setState((preStatus) => { const list = [...preStatus.list]; list.splice(index, 1) return { list } }); }
5、網絡請求
使用Charles代理網絡,安裝證書,設置端口,在手機上面打開網絡WIFI,設置代理IP和端口,這樣就能監聽到手機訪問的網絡,攔截請求,代理本地地址,返回本地數據。
需要注意的是charles識別不出來localhost,需要在package.json中改成設置:
* "start": "set PORT=3000 HOST=localhost.charlesproxy.com && react-scripts start",
訪問時候使用:
http://localhost.charlesproxy.com:3000/
(1)引入axios
yarn yarn add axios
(2)在componentDidMount進行網絡請求
/** * 這塊進行網絡請求 */ componentDidMount() { axios.get('api/todolist') .then((res) => { this.setState({ list: [...res.data] }) }).catch(() => { alert('發生錯誤') }) }
看完上述內容,你們掌握怎么在React中實現一個todolist功能的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。