Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以在JSX标记中使用模板文本吗?_Javascript_Reactjs_Jsx - Fatal编程技术网

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
只是一个变量,其值是一个组件,如果您要调用prop
Weather
而不是
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 />