Javascript react native react navigation undefined不是对象(使用';评估&#s.value.startsWith';)

Javascript react native react navigation undefined不是对象(使用';评估&#s.value.startsWith';),javascript,react-native,Javascript,React Native,我的应用程序中有两个屏幕。按下按钮时,我从一个屏幕移动到另一个屏幕。我正在发送第二个屏幕显示的参数 <Button onPress={ () => navigate('PDF', {pdf: 'Day1.pdf'})} > navigate('PDF',{PDF:'Day1.PDF'})}> PDF屏幕的render()代码如下 render() { const { navigation } = this.props; const pdf = navigati

我的应用程序中有两个屏幕。按下按钮时,我从一个屏幕移动到另一个屏幕。我正在发送第二个屏幕显示的参数

<Button onPress={ () => navigate('PDF', {pdf: 'Day1.pdf'})} >
navigate('PDF',{PDF:'Day1.PDF'})}>
PDF屏幕的render()代码如下

 render() {
   const { navigation } = this.props;
   const pdf = navigation.getParam('pdf', './assets/Day1.pdf');
   const abpdf = "\'./assets/"+pdf+"\'";
//     const rpdf = require('./assets/Day1.pdf');
  const rpdf1 = require(abpdf);
   return <WebView
      source={rpdf1} />
}
render(){
const{navigation}=this.props;
const pdf=navigation.getParam('pdf','。/assets/Day1.pdf');
常量abpdf=“\”./assets/“+pdf+”\”;
//const rpdf=require('./assets/Day1.pdf');
const rpdf1=require(abpdf);
返回
}
I get
undefined不是一个对象(评估's.value.startsWith')


如果我取消注释硬编码的
const rpdf=require('./assets/Day1.pdf')
并用rpdf替换WebView中的源代码,一切都会正常工作。当我使用console log
abpdf
时,我得到了正确的值。我做错了什么?

我猜它爆炸了,因为你在字符串中包含了单引号。尝试
const abpdf=“./assets/”+pdf

您不能有动态require,正如@larz在下面使用webpack时指出的那样,
require
语句不能有动态参数。解决方案是导入文件,然后象征性地引用它们

另一种方法是使用
eval
并确保Webpack不会分析
require
语句

const ass="../assets/expo.symbol.white.png";
const rass = eval(`require('${ass}');`);

见a。请参阅文件
AssetExamples.js

谢谢@larz。那是我第一次尝试的<代码>常量spdf=“./assets/”+pdf;常数rpdf2=需要(spdf)。仍然会得到相同的错误。这似乎是在要求声明中。你在使用网页包吗?我在使用世博快餐,它可能在下面使用网页包。我已经能够在一个简单的例子中重现这一点。文件
AssetExample.js
中的
render
函数有一个带注释的大纲,未注释时会出现相同的
undefined
问题。这似乎是
require
的参数是如何评估的。啊,是的,那肯定是一个网页问题。编译时,在运行所有
require
语句之前,它不会计算该变量是什么,因此动态
require
不起作用。很抱歉带来坏消息。谢谢@larz。我将导入所有需要的文件,然后象征性地引用这些文件,而不需要对参数进行求值。