Code Monkey home page Code Monkey logo

Comments (2)

okkjoo avatar okkjoo commented on May 13, 2024 2

createElement

  • 第一个参数是 type 简单来说就是各种 标签名字(包括 HTML 自身的,还有 React 组件名字)
  • 第二个参数是传入的属性
  • 第三个参数以及之后的参数就是作为组件的子组件
    JSX 编写的代码就是转换为这个方法,一般用了 JSX 写法都不会再需要自己直接调用 该方法

cloneElement

  • 第一个参数是 一个 React 元素
  • 新添加的属性会并入原有的属性
    一般配合 React.children.map使用,如用于动态地给子组件添加更多 props 信息、样式

更深一点的原因在于,React 元素是 不可变对象
例如 props.children 获取到的只是一个 描述符,不能直接修改它的任何属性,只能读取他的信息。
所以我们可以选择拷贝它们,然后再修改、添加

from daily-question.

shfshanyue avatar shfshanyue commented on May 13, 2024 1
React.cloneElement(
  element,
  [props],
  [...children]
)

React.createElement(
  type,
  [props],
  [...children]
)

直接上 API,很容易得出结论:首参不一样。这也是他们的最大区别:

  1. cloneElement,根据 Element 生成新的 Element
  2. createElement,根据 Type 生成新的 Element

然而,此时估计还是云里雾里,含糊不清,需要弄清它,首先要明白俩概念

  1. Type
  2. Element

React.cloneElement 的使用场景

from daily-question.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.