组件间的通信\数据的传递,通过属性content、的方式传递数据。父组件为TodoList,属性content传递。子组件为TodoItem,属性props接收数据

{this.props.xxx}
父组件通过属性的形式向子组件传递参数,
子组件通过props接收父组件传递过来的参数。

xxx 为定义传递的参数名

定义传递的参数名 content

赋key={index} 排除没有key值警告

拆分,新建一个小组件
固定语法:
// 引入react
import React from 'react'
// 继承React.Component组件
class TodoItem extends React.Component {
// 返回标签
render() {
<div>xxx xxx</div>
}
}
// 别忘了导出组件
export default TodoItem;

使用自定义组件:
1、导入自定义组件
import TodoItem from './TodoItem';
2、声明并使用自定义组件
<TodoItem />

拆分TodoItem组件
import React from "react";
class TodoItem extends React.Component {
render(){
return (
<div>{this.props.content}</div>
)
}
}
export default TodoItem;React有父子组件的概念,TodoList为父组件,TodoItem为子组件,
父组件通过属性给子组件传参
| <TodoItem content={item} />
子组件通过props接收父组件参数
| <div>{this.props.content}</div>
父组件通过属性的形式向子组件传递参数
子组件通过props接收父组件传递过来的参数
父组件通过属性的形式向子组件传参
子组件通过props接收父组件传递过来的参数
子组件通过调用父组件传递过来的方法实现与父组件的通信
创建子组件
import {Component} from 'react'
class TodoItem extends Component{
constructor(props){
//优化
this.itemDel = this.itemDel.bind(this)
}
itemDel(){
this.props.itemDel()
//const { itemDel } = this.props
//itemDel()
}
render(){
const { content } = this.props //结构赋值
return(
<div onClick={this.itemDel}>
{content}
</div>
)
}
}
export default TodoItem父组件引入子组件
import {Component,Fragment} from 'react'
import TodoItem from './TodoItem'itemDel(index){
let list=[...this.state.list]
list.splice(index,1)
this.setState({list})
}getTodoItems(){
return(
this.state.list.map((item,index) => {
return (
<TodoItem
key={index}
content={item}
itemDel={this.itemDel.bind(this,index)}
/>
)
}
)
}render(){
return(
<Fragment>
<div>
<input className='input-style' value={this.state.inputVal} onChange={this.inputChange}/>
<button style={{background:'blue',color:'#fff'}} onClick={this.butClick}>add</button>
</div>
<ul>{this.getTodoItems()}</ul>
</Fragment>
)
}
注意这里注释里的内容.
另外属性名可以随意.
react父组件向子组件传参:
父组件通过属性把值传给子组件,子组件通过props接收值
父子组件传递参数的方式.
父组件与子组件
父组件通过属性方式传递值给子组件,
子组件通过this.props获取父组件的属性
父组件通过属性的方式向子组件传递参数,子组件通过props接收父组件传递过来的参数。
子组件不能擅自修改props里的值。
父子組件概念:父組件通過屬性的形式向子組件傳遞參數,子組件通過props的形式接受父組件傳過來的參數
子組件通過 props 的形式來接受到父組件傳遞過來的參數。
TodoItem接受你傳遞過來的 content 的內容
{this.props.content}
父組件透過屬性的形式向子組件傳遞參數
此例為:
以一個 content 參數的形式傳給 TodoItem
import React from 'react';
import ToDoIterm from './ToDoIterm';
//React避免 Dom 操作,主要是面向数据操作;
class ToDoList extends React.Component{
//state存放数据的地方;
constructor(props){
super(props);
this.state = {
list:[],
inputValue:''
}
}
//修改state用setState;
handleBtnClick(){
this.setState({
list:[
...this.state.list,//...:数组展开符;
this.state.inputValue
],
inputValue:''//为了让点击后input值清空;
});
}
//监听input值变化;
handleBtnChange(e){
this.setState(
{
inputValue:e.target.value //获取变化值;
}
);
}
//删除点击的列表项;
handleItemDelet(index){
//这一步相当于复制list(即副本);在React中对state数据进项操作时,建议对副本操作,提高代码可调实性;
const list = [...this.state.list];
list.splice(index,1);
this.setState({
list //list : list的简化,在es6中当key=value时可简化;
})
}
render(){
return (
<div>
<div>
<input value={this.state.inputValue} onChange={this.handleBtnChange.bind(this)}></input>
<button onClick={this.handleBtnClick.bind(this)}>add</button>
</div>
<ul>
{this.state.list.map((iterm,index)=>{ //循环list;
return <ToDoIterm key={index} content={iterm}/>;//父组件以参数的形式向子组件传递参数;
//return <li key={index} onClick={this.handleItemDelet.bind(this,index)}>{item}</li>
})}
</ul>
</div>
);
}
}
export default ToDoList;
// 父组件通过属性的形式向子组件传递参数
// 子组件通过props接口父组件参数
父组件通过属性的形式给子组件传递参数
子组件通过props的形式接受父组件传递的参数
React 组件传值:
<ul>{
this.state.list.map((item,index)=>{
return <TodoItem content={item}/>
})
}</ul>
注释:item 传的值
index :值的位置
TodoItem :组件名称
组件接收值:
先创建组件:
import React from 'react';
class TodoItem extemds React.Component{
render(){
return(
<div>{}</div>
)
}
}
export default TodoItem;//导出组件
组件接收传过来的值时:
只需要更改接收方式:
<div>{this.props.content}</div>
记:父组件通过属性的形式给子组件传递参数
子组件通过this.props.(传过来的参数)来接收
react:
通过属性的形式从父组件向子组件传递参数
子组件通过props的形式接收父组件传递过来的参数
父组件通过属性的方式传递给子组件
子组件通过this.props.属性来接收
子组件和父组件之间的参数传递
父组件通过定义参数的形式传递,子组件通过props来接收


为什么循环产生的组件中要利用 key 这个特殊的 prop?
Keys 负责帮住 React 跟踪列表中哪些元素被改变,添加,删除。React 利用子元素的 key 再比较两棵树的时候,快速得知一个元素时新的还是刚刚被移除。没有 Keys , React 也就不知道当前哪一个的 item 被移除了。
父组件通过属性的形式向子组件传递参数
子组件通过 props 接受父组件传递过来的参数
在此过程中 key 属性不可缺
react父子组件间参数的传递和引用
父组件通过属性的形式向子组件传递数据, 子组件通过props的形式接受父组件的数据。