React组件拆分与传值

前端之家收集整理的这篇文章主要介绍了React组件拆分与传值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

组件拆分与组件之间的传值

父子组件的概念:

父组件通过属性的方式,向自组件传值

子组件通过this.props的属性,接收传递过来的值

 

父组件

src/TodoList.js

  1. import React,{Component,Fragment} from 'react';
  2. import TodoItem from './TodoItem';
  3. import './style.css';
  4. class TodoList extends Component {
  5. constructor(props) {
  6. super(props);
  7. this.state = {
  8. inputVal:'',list:[]
  9. };
  10. this.changeVal=this.changeVal.bind(this);
  11. this.addItem=this.addItem.bind(this.deleteItem=this.deleteItem.bind();
  12. }
  13. changeVal(e){
  14. .setState({
  15. inputVal: e.target.value
  16. });
  17. }
  18. addItem(e){
  19. //按下回车键
  20. if(e.keyCode===13 && e.target.value!==""){
  21. const list=[....state.list,e.target.value]
  22. .setState({
  23. list:list
  24. 对象的键值相同时,简写
  25. list,inputVal:''
  26. })
  27. }
  28. }
  29. deleteItem(index){
  30. const list=[....state.list];
  31. list.splice(index,1);从数组中删除指定index的数据
  32. .setState({
  33. list
  34. })
  35. }
  36. getList(){
  37. return this.state.list.map((item,index)=>{
  38. return (
  39. <TodoItem
  40. item={item}
  41. key={index}
  42. index={index}
  43. deleteItem={.deleteItem}
  44. />
  45. )
  46. })
  47. }
  48. render(){
  49. 这是JS中的注释
  50. (
  51. <Fragment>
  52. {/* 这是JSX中的注释 */}
  53. <label htmlFor="input">请输入内容:</label>
  54. <input type="text"
  55. id="input"
  56. className="input"
  57. value={.state.inputVal}
  58. onChange={.changeVal}
  59. onKeyUp={.addItem}
  60. />
  61. <ul>{this.getList()}</ul>
  62. </Fragment>
  63. );
  64. }
  65. }
  66. export default TodoList;

 

自组件 TodoItem.js

  1. import React,{Component} from 'react';
  2. class TodoItem extends Component{
  3. constructor(props){
  4. super(props);
  5. );
  6. }
  7. deleteItem(){
  8. 调用父组件传递过来的方法
  9. this.props.deleteItem(this.props.index);
  10. 解构赋值写法
  11. const {deleteItem,index}=.props;
  12. deleteItem(index);
  13. }
  14. render(){
  15. return <li key={this.props.index} onClick={this.deleteItem}>{this.props.item}</li>
  16. }
  17. }
  18. export default TodoItem;

 

效果

 

猜你在找的React相关文章