Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.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 创建没有声明的类_Javascript_React Native_Eval - Fatal编程技术网

Javascript 创建没有声明的类

Javascript 创建没有声明的类,javascript,react-native,eval,Javascript,React Native,Eval,可以在没有直接定义的情况下创建类?(eval函数有用吗? 我试图这样做,但得到了一些错误,例如未定义类名,渲染未返回任何内容以及其他错误 import*as React from'React'; 从“react native”导入*作为RN; 从'@react-navigation/native'导入{NavigationContainer}; 从“@react navigation/bottom tabs”导入{createBottomTabNavigator}; const BottomTa

可以在没有直接定义的情况下创建类?(eval函数有用吗?
我试图这样做,但得到了一些错误,例如未定义类名,渲染未返回任何内容以及其他错误

import*as React from'React';
从“react native”导入*作为RN;
从'@react-navigation/native'导入{NavigationContainer};
从“@react navigation/bottom tabs”导入{createBottomTabNavigator};
const BottomTabs=createBottomTabNavigator();
导出默认函数App(){
让状态={
屏幕名称:['1','2','3'],
screenJSXs:[],
};
让屏幕=[],类字符串='',类=[];
state.screenNames.map((n)=>{
state.screenJSXs.push(Hi{n});
});
state.screenNames.map((n,i)=>{
push('class'+n+'扩展React.Component{render(){return('+state.screenJSXs[i]+')}');
//范例
/*
类1扩展了React.Component{
render(){
返回(
你好
);
}
}
*/
ClassString=Classes.join('\n');
eval('ClassString');
});
state.screenNames.map((n,i)=>{
屏幕。推();
});
//如果n使用“”推入eval函数,则项目可以正常工作,但使用空白页,否则返回错误:未定义类名。
返回(
{SCREENS}
);
}
通过这个问题,我该怎么办? 谢谢。

eval()
从来都不是解决任何问题的正确方法。Insead使用按照预期方式进行反应。从组件类开始:

class Screen extends React.Component {
    render(){
        return (
            <RN.View>
                <RN.Text>
                    Welcome back {this.props.name}
                </RN.Text>
            </RN.View>
        );
    }
}
类屏幕扩展React.Component{
render(){
返回(
欢迎回来{this.props.name}
);
}
}
然后创建此组件的入口并将值作为道具传递给它:

let screens = screenNames.map(name => <Screen name=name />);
let screens=screenNames.map(name=>);
我在这里使用
map()
而不是for循环,以便更容易地从现有名称数组创建新数组

仅当呈现组件的内部实体列表时,才应创建这样的数组。我认为您并不真正需要这个数组,因为这是一个单独的页面,而不是页面中的一个组件。这里没有多个页面。您有一个包含动态数据的页面。您不需要类的数组。您需要一个可用于呈现传递给它的数据的组件类

我建议您阅读React教程,以增加对组件工作原理的了解。

eval()
从来都不是解决任何问题的正确方法。Insead使用按照预期方式进行反应。从组件类开始:

class Screen extends React.Component {
    render(){
        return (
            <RN.View>
                <RN.Text>
                    Welcome back {this.props.name}
                </RN.Text>
            </RN.View>
        );
    }
}
类屏幕扩展React.Component{
render(){
返回(
欢迎回来{this.props.name}
);
}
}
然后创建此组件的入口并将值作为道具传递给它:

let screens = screenNames.map(name => <Screen name=name />);
let screens=screenNames.map(name=>);
我在这里使用
map()
而不是for循环,以便更容易地从现有名称数组创建新数组

仅当呈现组件的内部实体列表时,才应创建这样的数组。我认为您并不真正需要这个数组,因为这是一个单独的页面,而不是页面中的一个组件。这里没有多个页面。您有一个包含动态数据的页面。您不需要类的数组。您需要一个可用于呈现传递给它的数据的组件类


我建议您阅读React教程,以加深对组件工作原理的理解。

eval
解析普通javascript。您试图做的是解析jsx。jsx不是简单的javascript。它是transpilator在构建项目时——在将项目发送到客户端之前传输的语法。 您可以尝试使用React with OTU jsx
但真正应该做的是永远不要使用eval。

eval
解析普通javascript。您试图做的是解析jsx。jsx不是简单的javascript。它是transpilator在构建项目时——在将项目发送到客户端之前传输的语法。 您可以尝试使用React with OTU jsx
但你真正应该做的是永远不要使用eval。

不要使用eval()。解释您正在尝试做的事情,我们可以帮助您找到更好的方法。旁注:类不是表达式。我想创建一个包含对象的类,而不是自己的Declaration \我该怎么做?什么是“创建包含对象的类”?“不属于自己的声明”是什么意思?您可以直接在代码中声明类的原因是什么?请提供更多详细信息。请在您的帖子中提供有关您需要帮助的更多详细信息。不要使用eval()。解释您正在尝试做的事情,我们可以帮助您找到更好的方法。旁注:类不是表达式。我想创建一个包含对象的类,而不是自己的Declaration \我该怎么做?什么是“创建包含对象的类”?“不属于自己的声明”是什么意思?您可以直接在代码中声明类的原因是什么?请提供更多详细信息。请在您的帖子中提供有关您需要帮助的更多详细信息。亲爱的朋友,我想创建多个具有不同JSX的页面,我将自己的JSX推送到该类。你的意见是什么?@Naa8757我建议你问一个新问题。展示两到三个“多页”的例子,以及JSX的不同之处。这里的示例中唯一的区别是,您可以使用单个类和传递道具轻松处理数据,如我在这里的回答中所示。如果您有许多差异更大的页面,那么您很可能只需要为每个页面编写类。从这里开始,您可以开始寻找可以封装到可重用类中的模式。亲爱的朋友,我想用不同的JSX创建多个页面,我将自己的JSX推送到该类中。你的意见是什么?@Naa8757我建议你问一个问题