CMD:
react-native init Test && react-native run-android
App.js:
export default class App extends Component {
render() {
new Function("person", "const { firstname } = person; alert(firstname);")({ firstname: "Test" });
}
}
每当构造和调用新函数时,应用程序就会崩溃,说明:"SyntaxError: Unexpected token '{'. Expected an identifier name in const declaration"
仅在Android上发生。
任何帮助将不胜感激。谢谢!
React Native:v0.55.7
答案 0 :(得分:0)
react native documentation指示JavaScriptCore通常在运行时(调试期间为V8)使用,但是在如何配置方面没有具体说明。它确实提到的一件事是,原生JavaScriptCore在iOS上使用,而该应用捆绑了一个不同版本供Android上的用户使用。
由于在编译时使用Babel并使用本机响应来支持ES5 / ES6功能,因此可能是在较低的支持级别上配置了运行时。因此,当尝试在运行时从字符串创建代码时,实际上您可能正在使用不理解例如解构语法的JavaScript解释器运行。
您可以尝试在运行时使用Babel的transform来翻译您的代码:
import {transform} from 'babel-core';
export default class App extends Component {
render() {
const f = 'const { firstname } = person; alert(firstname);';
const result = transform(f, {
presets: ['es2015']
});
new Function("person", result.code)({ firstname: "Test" });
}
}
答案 1 :(得分:-1)
可以使用动态名称创建const吗?如果有可能,请对我缺乏对该主题的知识感到抱歉。 错误消息说,应为变量const命名。 我希望它是有用的。 最好的问候。
答案 2 :(得分:-1)
尝试更改您创建该函数的样式。在React Native中,常见的箭头功能是箭头,必须在您的render方法之外创建。 请注意,每次状态更改时,都会触发一次render方法。这将浪费内存资源和不必要的计算时间
Failures:
1) #acronym returns initial letter of each word
Failure/Error: expect(acronym sentence).to eq('avss')
expected: "avss"
got: "Avss"
(compared using ==)