react-native react-navigation undefined不是对象(评估's.value.startsWith')

时间:2018-08-14 19:28:11

标签: javascript react-native

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

<Button onPress={ () => 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} />
}

我得到undefined is not an object (evaluating 's.value.startsWith')

如果我取消注释硬编码的const rpdf = require('./assets/Day1.pdf'),并用rpdf替换WebView中的源,则一切正常。当我控制台日志abpdf时,我得到了正确的值。我在做什么错了?

3 个答案:

答案 0 :(得分:0)

我猜它正在膨胀,因为您在字符串中包含了单引号。尝试const abpdf = "./assets/" + pdf;

答案 1 :(得分:0)

您不能具有动态需求,这在文档中已明确告知

答案 2 :(得分:0)

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

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

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

查看small working example。查看文件AssetExamples.js