javascript - 用 vanilla javascript 重写 React 功能组件

标签 javascript reactjs ecmascript-6 components jsx

我很难理解 React 中的函数组件如何通过 es6 将 props 作为参数放置在对象中。这是es6功能的一部分吗?或者它是 React 的一部分,可以神奇地将 props 作为参数传递出来,而不必引用 this.props... ?如果有人可以用一个函数(而不是像 Babel repl 那样的 React.createElement )为我重写下面的 vanilla js 组件,那将会非常有帮助。

const Repos = ({repos}) => {
  return (
    <div>
      <h3> User Repos </h3>
      <ul className="list-group">
        {repos.map((repo, index) => {
          return (
            <li className="list-group-item" key={repo.name}>
              <h4><a href={repo.html_url}>{repo.name}</a></h4>
              <p>{repo.description}</p>
            </li>
          )
        })}
      </ul>
    </div>
  )
}

最佳答案

它正在使用destructuring是的,它是标准的一部分。

它所做的基本上相当于说

const repos = props.repos;

如果您有 props 作为参数,您会做什么

const Repos = (props) => {
  const repos = props.repos;
  return (
    <div>
      (...)
    </div>
  )
}

在 ES3 中,您还必须拼写出 function 关键字并使用 var 而不是 const

var Repos = function(props) {
  var repos = props.repos;
  return (
    <div>
      (...)
    </div>
  )
}

所以唯一的 React 魔法是使用 JSX 在代码中内联标记。

关于javascript - 用 vanilla javascript 重写 React 功能组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39306475/

相关文章:

javascript - jQuery 中如何获取元素的具体值

reactjs - 如果可以使用 async/await 让 React 的 setState 同步会怎样

javascript - 使用 Browserify 设置 Karma 以测试 React (ES6) 组件

jasmine - 在 TestUtils 中使用 CSS 选择器查找组件

android - 应用react.gradle抛出错误

javascript - JSX (React) 中的花括号意味着什么?

javascript - 在 Redux 中将多个操作传递给 mapDispatchToProps

javascript - 如何让UI线程持续运行

javascript - 如何从对象名称获取数组位置?

javascript - div block 内的空 span 元素