React案例练习

TodoList案例

相关知识点

1.拆分组件、实现静态组件,注意: className、style的写法

2.动态初始化列表,如何确定将数据放在哪个组件的state中?

  • 某个组件使用:放在其自身的state中
  • 某些组件使用:放在他们共同的父组件state中(官方称此操作为:状态提升)

3.关于父子之间通信:

  • 1.【父组件】给【子组件】传递数据:通过props传递
  • 2.【子组件】给【父组件】传递数据:通过props传递,要求父提前给子传递一个函数

4.注意defaultchecked 和 checked的区别,类似的还有: defaultValue 和 value

  • defaultchecked只能是第一次赋值起作用,之后如果变量值更新了,不会对元素进行更新
  • checked可以随时根据绑定的变量的值更新元素显示,但是必须绑定onChange函数,否则点击事件不会生效的

5.状态在哪里,操作状态的方法就在哪里

github搜索案例

相关知识点

1.设计状态时要考虑全面,例如带有网络请求的组件,要考虑请求失败怎么办。

2.ES6小知识点:解构赋值+重命名

  • let obj = {a:{b:1}}
  • const {a} = obj; //传统解构赋值
  • const {a:{b}} = obj; //连续解构赋值
  • const {a:{ b:value}} = obj;//连续解构赋值+重命名

3.消息订阅与发布机制

  • 先订阅,再发布(理解:有一种隔空对话的感觉)
  • 适用于任意组件间通信
  • 要在组件的componentwi11Unmount中取消订阅

4.fetch发送请求(关注分离的设计思想)

try {
    const response= await fetch(`/api1/search/users2?q=${keyword}`)
    const data = await response.json()
    console.log(data);
} catch (error) {
	console.log('请求出错',error);
}

代码及过程

还有一些教程中的案例,访问github

https://github.com/liushun-ing/start_react_app

Last Updated:
Contributors: liushun-ing