React Native 数组道具混淆

Posted

技术标签:

【中文标题】React Native 数组道具混淆【英文标题】:React Native array prop confuse 【发布时间】:2019-01-01 04:28:37 【问题描述】:

我有两个组件,一个父组件 (ManySpace) 和一个子组件 (OtherComponent)。 OtherComponentmanyspace 属性呈现两个具有两个不同数组的 ManySpace 组件。

MANYSPACE1 和 MANYSPACE2 渲染是完美的,但是混淆了第一个 ManySpace 和第二个 ManySpace 组件数组的内容我如何解决这个问题谢谢。 希望我能解释我的问题

import React,  Component  from 'react'; //and other imports
  let MANYSPACE;
  let icerik;
  let firsttext;
  let firstinput;
  let answer1;
  let answerlength1;
  let secondtext;
  let secondinput;
class ManySpace extends Component 
  render() 
    MANYSPACE = this.props.manyspace;
    icerik = MANYSPACE[0].icerik;
    firsttext = MANYSPACE[0].firsttext;
    firstinput = MANYSPACE[0].firstinput;
    if (firstinput) 
      answer1 = MANYSPACE[0].firstinput.answer1;
      answerlength1 = answer1.length;
    

    secondtext = MANYSPACE[0].secondtext;
    secondinput = MANYSPACE[0].secondinput;
    if (secondinput) 
      answer2 = MANYSPACE[0].secondinput.answer2;
      answerlength2 = answer2.length;
    
  return (

  ) 

--我的其他组件

import React,  Component  from 'react'; //and other imports
  const MANYSPACE1 = [
    
      icerik: 'lorem ipsum',
      firsttext: 'lorem ipsum',
      firstinput: 
        answer1: 'lorem ipsum'
      ,
      secondtext: 'lorem ipsum'
    
  ];
  const MANYSPACE2 = [
    
      icerik:'lorem ipsum',
      firsttext: 'lorem ipsum',
      firstinput: 
        answer1: 'lorem ipsum'
      ,
      secondtext: 'lorem ipsum',
      secondinput: 
        answer2: 'lorem ipsum'
      ,
      thirdinput: 
        answer3: 'lorem ipsum'
      
    
  ];  
class OtherComponent extends Component 
    <ManySpace
      manyspace=MANYSPACE1
    />
    <ManySpace
     manyspace=MANYSPACE2
    />

【问题讨论】:

【参考方案1】:

render 方法内创建变量,而不是为所有 ManySpace 实例共享一个变量。

示例

import React,  Component  from "react"; //and other imports

class ManySpace extends Component 
  render() 
    const MANYSPACE = this.props.manyspace;
    const  icerik, firsttext, firstinput  = MANYSPACE[0];
    let answer1, answerlength1;

    if (firstinput) 
      answer1 = MANYSPACE[0].firstinput.answer1;
      answerlength1 = answer1.length;
    

    const  secondtext, secondinput  = MANYSPACE[0];
    let answer2, answerlength2;

    if (secondinput) 
      answer2 = MANYSPACE[0].secondinput.answer2;
      answerlength2 = answer2.length;
    

    return (
      /* ... */
    );
  

【讨论】:

感谢您的回复,但我的错误是我使用渲染范围之外的变量我尝试和 secondinput 不可用警告,我在渲染函数之外就像这样我如何做到 onSubmitEditing1 = () => if (secondinput ) this.secondref.focus(); else if (thirdinput) this.thirdref.focus(); else Keyboard.dismiss(); ; @Radex26 问题一经回答,请勿更新。如果您认为该问题已得到解答,请接受该问题的答案并创建一个全新的问题。 好吧,对不起,对不起,我忘了这块,但是我如何解决这个问题,如果你能解决我很满意

以上是关于React Native 数组道具混淆的主要内容,如果未能解决你的问题,请参考以下文章

React native 不在组件之间传递道具?

react-native-video 中的 OnBuffer 道具不起作用

带有 redux 的 React-Native-Navigation V2 无法传递道具

react-native 中的小问题活动指标 |组件 |组件内的道具 |道具 |设置状态

react native:TouchableOpacity 组件上的样式道具

如何使用 React-Native 和 Reanimated 2 为 svg 设置动画道具变换