zoukankan      html  css  js  c++  java
  • react第二天学习笔记

    1.react中css样式的使用方式

      1)jsx内嵌样式(这第一个大括号表示要在jsx中写js,第二个表示js对象)

        <li style = {{color : '#FF0'}}>jsx内嵌样式</li>
      2)使用className在通过css文件控制样式
        <li className = 'Red'>使用className在通过css控制样式</li>
      3)当有多个className时,也就是有多重特征时,可以从npm中下载classnames,因为classNames为方法   
        <li className = {classNames("a",{b:true,c:false})}></li>
      4)使用styled-components在原有元素的样式上包装成新的样式(扩展元素名都需要大写,且第一种表示为模板字符串``,不是引号)
        const Title = styled.h1`
          color : #F00;
        `
        const Button = styled.button({
          color: 'grey',
        });
        <Title />
     
    2.关于组件布局总结
      1)每个组件渲染时,只能拥有一个根标签,如果根标签不想用div占位时,可以使用Fragment即空组件
      2)  每个组件原则上应该都有一个文件夹
      3)  在路径问题上,react会默认寻找当前路径下的index.js,import时可以省略部分
      4)  在父js中,若仅为导出使用,可用以下格式
        export {default as List} from './list';
     
    3.关于组件中的props的总结:
      1)props是组件传递值的对象,组件可以通过添加属性来传递值,组件的子元素为props中的children值可以为元素等值
      2)类组件可以直接调用,函数组件需要通过函数名.props去调用
      3)往props里传数值时,需加大括号表示,否则即为字符串
      4)在props对象里的值进行检验时,有props-types方法,即用组件自己提供的propsTypes进行数值类型和有无的检验
     
          Test.propsTypes = {
            key : props-types.String.isRequired   (注意不能单独用isRequired,会报错)
          }
      5)对props里的值设置默认值时,组件自己提供了defaultProps
        Test.defaultProps = {   //这是函数式组件的使用方法
          key : 默认值
        }
     
    4.组件的分类:
      1)根据组件的创建方式不一样分为:
        类组件和函数组件
      2)根据组件有无state分为:
        有状态组件和无状态组件
      3)根据控制程度可分为
        完全受控组件:数据全部来自于props,数据源传递
        半受控组件:部分数据受控于数据源(props),部分数据受控于state
        不受控组件:数据受控于内部state的变化
     
    5.模板渲染的语法和props向下传递的技巧
      1)在数据源中,数据都是在构造函数中对state进行初始化操作(注意,得先调用super方法)
      2)然后利用props向下传递,不能跨组件传递,
      3)如果传递的内容中有html字符串时,可以用以下方式解译
        <div dangerousSetInnerHTML = {{_html: '<div>html字符串</div>'}} />
      4)如果在传递的数据中有数组时,可以用js中的map解析
        this.props.list.map(item => {
          return (
            <div key="key值必须给,否则会报错" value = {item.value}/>
          )
        })
     
    6.react对内部数据进行动态修改时使用setState修改数据的两种方式:(这个方法可以有两个参数, 第一个参数可以有两种情况)
      1)this.setState({对象里是state中要修改的内容})    第一个参数为对象
      2)this.setState((preState,preProps) => {    上一次的State和上一次的Props
        return  {}
      )}
      3)这个方法有第二个参数,因为这个方法是异步的,所以第二个参数是回调函数,参数是改变后的 state和props
        
      
        
     
  • 相关阅读:
    由高度场求法线
    unity中的透视投影矩阵
    bindpose定义
    blinn-phong高光反向穿透问题
    fft ocean注解
    理顺FFT
    unity, 在image effect shader中用_CameraDepthTexture重建世界坐标
    unity, ComputeScreenPos 作用
    Lambert漫反射的BRDF
    VC++ MFC获取对话框上控件的位置
  • 原文地址:https://www.cnblogs.com/nyhhd/p/12298049.html
Copyright © 2011-2022 走看看