栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

什么是仅适用于属性的Angular指令的React等效项?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是仅适用于属性的Angular指令的React等效项?

考虑一下Angular和React在“幕后”所做的事情将是有帮助的。

在您的Angular示例中,当您编写时,

<divclassy/></div>
您说的是“呈现DIV元素,然后将
classy
指令定义的行为附加到该元素。

在您的React示例中,当您编写时

<MyComponentclassy></MyComponent>
,您说的是:“创建MyComponent实例并将其传递给props
{ classy: true}
。编译器(Babel或whathaveyou)会将其转换为以下Javascript:

React.createElement(MyComponent, { classy: true });

因此,您的问题的答案是您无法编写文字,

<MyComponentclassy></MyComponent>
因为
MyComponent
组件不知道如何处理该
classy
道具。在React中,您可以这样写:

class ClassyDiv extends React.Component {  render() {    const { className, ...rest } = this.props;    return <div className={`${className || ''} stay-classy`} {...rest}/>;  }}

之所以可行,是因为我们知道该

React.DOM.div
组件(像大多数DOM组件一样)知道如何处理该
className
道具。

从React 0.14开始,我们可以更简单地将此类内容表示为“纯”无状态功能组件,即接受props并返回渲染结果的函数:

function AlsoClassyDiv(props) {  const { className, ...rest } = props;  return <div className={`${className || ''} stay-classy`} {...rest}/>;};

您可以在下面的代码片段中看到两种方法都在起作用。

class ClassyDiv extends React.Component {  render() {    const { className, ...rest } = this.props;    return <div className={`${className || ''} stay-classy`} {...rest}/>;  }}function AlsoClassyDiv({ className, ...props }) {  return <div className={`${className || ''} stay-classy`} {...props}/>;};ReactDOM.render(  <div id="container">    <div>Regular div</div>    <ClassyDiv>ClassyDiv!</ClassyDiv>    <AlsoClassyDiv>AlsoClassyDiv!</AlsoClassyDiv>  </div>,  document.body);.stay-classy { font: bold 3em Helvetica; text-shadow: 4px 4px 2px #aaa; }<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616529.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号