Javascript 我可以在JSX标记中使用模板文本吗?
我基本上希望在我正在制作的组件中呈现可变组件,这些组件将根据用户在道具中提供的输入而变化,但我希望避免不必要的Javascript 我可以在JSX标记中使用模板文本吗?,javascript,reactjs,jsx,Javascript,Reactjs,Jsx,我基本上希望在我正在制作的组件中呈现可变组件,这些组件将根据用户在道具中提供的输入而变化,但我希望避免不必要的if语句等等 我能做到吗?例如,如果用户将weather属性定义为Sun,那么将与相同,您不能将JSX语法与模板文本混合使用(尽管在JSX的任何地方都可以放置{JSExpression})您可以使用模板文字,但不能将表达式放在需要组件名称的位置) 但是由于Sun只是一个变量,其值是一个组件,如果您要调用propWeather而不是Weather,您可以:您不能将JSX语法与模板文本混合使
if
语句等等
我能做到吗?例如,如果用户将
weather
属性定义为Sun
,那么
将与
相同,您不能将JSX语法与模板文本混合使用(尽管在JSX的任何地方都可以放置{JSExpression})
您可以使用模板文字,但不能将表达式放在需要组件名称的位置)
但是由于
Sun
只是一个变量,其值是一个组件,如果您要调用propWeather
而不是Weather
,您可以:
您不能将JSX语法与模板文本混合使用(尽管您可以在JSX的任何地方放置{JSExpression}
您可以使用模板文字,但不能将表达式放在需要组件名称的位置)
但是由于
Sun
只是一个变量,它的值是一个组件,如果你要调用你的道具Weather
而不是Weather
,你可以:如果Weather
包含对Sun
函数的引用,你可以直接使用Weather
(而不是通过模板文本),但在小写情况下,JSX将假定它是一个HTML标记,而不是一个组件,并将其放在结果React.createElement
调用中的引号中;因此,您必须使用初始上限变量(Weather
而不是Weather
):
如果weather
包含字符串“Sun”
,则不能直接使用它创建Sun
元素;您需要的是对Sun
函数的引用,而不是字符串。您需要一种从字符串到函数的方法(查找它的对象、映射等)
您可以在JSX中的其他地方,在{}
中使用模板文本,因为它们包含JavaScript表达式。但是不要为标记定义组件。如果weather
包含对Sun
函数的引用,您可以直接使用weather
(不是通过模板文本),但在小写情况下,JSX将假定它是HTML标记,而不是组件,并将其放在结果React.createElement
调用中的引号中;因此,您必须使用初始上限变量(Weather
而不是Weather
):
如果weather
包含字符串“Sun”
,则不能直接使用它创建Sun
元素;您需要的是对Sun
函数的引用,而不是字符串。您需要一种从字符串到函数的方法(查找它的对象、映射等)
您可以在JSX中的其他地方,在{}
中使用模板文本,因为它们包含JavaScript表达式。但不要为标记定义组件。在React中,以大写字母开头的名称将编译为createComponent方法。考虑到这一点,正确的解决方案是将名称值赋给大写的变量(见下文)
const WeatherComponent=props=>{
常量组件标记名=props.weather;
回来
}
我喜欢使用的另一种技术是映射对象中的子组件。这使得组件更容易配置(和重用),因为只需要一个缩写键而不是完整的组件名
从“React”导入React;
从“/sun component”导入sun组件;
从“/rain component”导入RainComponent;
常数组件={
太阳:太阳组件,
雨水:雨水成分
};
常量WeatherComponent=(道具)=>{
常量标记名=WeatherComponents[props.weather | | Sun'];
回来
}
导出默认MyComponent;
在React中,以大写字母开头的名称将编译为createComponent方法。考虑到这一点,正确的解决方案是将名称值赋给大写的变量(见下文)
const WeatherComponent=props=>{
常量组件标记名=props.weather;
回来
}
我喜欢使用的另一种技术是映射对象中的子组件。这使得组件更容易配置(和重用),因为只需要一个缩写键而不是完整的组件名
从“React”导入React;
从“/sun component”导入sun组件;
从“/rain component”导入RainComponent;
常数组件={
太阳:太阳组件,
雨水:雨水成分
};
常量WeatherComponent=(道具)=>{
常量标记名=WeatherComponents[props.weather | | Sun'];
回来
}
导出默认MyComponent;
组件需要以大写字母开头,您可以const Component=weather
然后将其用作
这是否解决了您的问题组件需要以大写字母开头,您可以const Component=weather
然后将其用作
这能解决您的问题吗
<Weather />