[英]How to pass data from vanilla JavaScript to React functional component
[英]Rewrite react functional component in vanilla javascript
我很难理解通过es6在React中的功能组件如何通过将props放置在对象中来获取props作为参数。 这是es6功能的一部分吗? 还是React的一部分,不需要引用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>
)
}
它正在使用解构 ,是的,它是标准的一部分。
它基本上在做什么相当于说
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-magic就是使用JSX在代码中内联标记。
这是一项解构任务,是ES2015规范的一部分。 Repos
是需要Object
的函数。 调用Repos
,它将评估解构模式并将结果分配给其单个参数:
const Repos = ({repos}) => { return repos; } const props = {repos: [1,2,3]}; const foo = {bar: "baz"}; console.log(Repos(props)); console.log(Repos(foo));
属性的名称( repos
)和实际传递给Repos
的参数的名称是相同的,因为给定的解构模式没有定义其他模式(实际上({repos})
是({repos:repos})
)。 但是,使用不同的名称可以更清楚地了解发生的情况:
const Repos = ({repos:arg}) => { return arg; } const props = {repos: [1,2,3]}; console.log(Repos(props));
请注意,这与默认参数无关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.