React JSX

作者: 三元一只十元三只 | 来源:发表于2020-04-08 09:13 被阅读0次

    JSX是React.createElement(component,props,...children)函数的语法糖。

    <MyButton color="red" showSize={2}>

    Click me

    </MyButton>

    会被编译成

    React.createElement(

      MyButton,

        {color:red, showSize:2},

        "Ckick me"

    )

    如果没有子元素,可以使用闭合标签<MyButton {...props}  />

    上面的{...props}使用的JSX的属性展开特性。

    function App2() {

        const props = {firstname: "Ben",lastname: "Hector" }

        return ( <Geeting {...props} /> )

    }

    等效于

        return ( <Geeting firstname="Ben" lastname="Hector" />)

    此外还可以通过属性展开只取需要的props属性。

    const { kind,...other } = props;

    可以将父组件中kind属性获取到,剩余属性都在other中。

    用户自定义标签需要首字母大写,因为React会将小写字母开头的标签当成HTML标签处理,可能会导致编译错误。

    我们还可以根据需求动态的选择React组件,但是标签并不支持表达式,但是支持变量,我们可以将表达式赋给一个大写字母开头的变量,然后通过变量动态选择组件。

    const components = {

        photo: PhotoStory,

        video: VideoStory

    }

    function Story(props) {

        const SpecificStory = components[props.storyType];

        return ( <SpecificStory /> )

    相关文章

      网友评论

          本文标题:React JSX

          本文链接:https://www.haomeiwen.com/subject/slkzphtx.html