Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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 react native-在平面列表中具有静态和动态元素_Javascript_Reactjs_React Native_React Native Flatlist - Fatal编程技术网

Javascript react native-在平面列表中具有静态和动态元素

Javascript react native-在平面列表中具有静态和动态元素,javascript,reactjs,react-native,react-native-flatlist,Javascript,Reactjs,React Native,React Native Flatlist,我正在尝试创建一个类似于Twitter的推文后列表的平面列表,显示设备库中从相机到照片的各种选项 我不知道如何将前2-3个元素作为静态元素,然后通过CameraRoll或其他方式添加动态元素 我想到的第一个解决方案是使用一个数组,它的前2-3个元素作为包含“Camera”、“Gallery”等的文本,然后将该数组与动态数组连接起来,并通过renderItem()函数处理所有内容,以显示“static element”案例的不同视图。但我希望有一个更好的方法来做到这一点。请帮我解决这个问题。我认

我正在尝试创建一个类似于Twitter的推文后列表的平面列表,显示设备库中从相机到照片的各种选项

我不知道如何将前2-3个元素作为静态元素,然后通过CameraRoll或其他方式添加动态元素


我想到的第一个解决方案是使用一个数组,它的前2-3个元素作为包含“Camera”、“Gallery”等的文本,然后将该数组与动态数组连接起来,并通过renderItem()函数处理所有内容,以显示“static element”案例的不同视图。但我希望有一个更好的方法来做到这一点。请帮我解决这个问题。

我认为最好、最简单的方法是按照您概述的方式进行:将“静态”数组与“动态”数组连接起来,并分别处理静态数组

示例

class Options extends React.Component {
  renderItem({ item, index }) {
    if (index === 0) {
      return <Camera />;
    } else if (index === 1) {
      return <Live />;
    } else {
      return <GeneralItem {...item} />;
    }
  }

  render() {
    const statics = [{ text: 'Camera' }, { text: 'Live' }];

    return (
      <FlatList
        data={statics.concat(this.props.data)}
        renderItem={this.renderItem}
      />
    );
  }
}
类选项扩展了React.Component{
renderItem({item,index}){
如果(索引==0){
返回;
}else if(索引===1){
返回;
}否则{
返回;
}
}
render(){
const statics=[{text:'Camera'},{text:'Live'}];
返回(
);
}
}

为什么不能有两个组件?如果您想有两个列表,第一个是静态元素,第二个是动态元素(这就是您所说的吗?),那么滚动将无法正常工作。“静态+动态”列表作为一个整体应该是可滚动的。我明白了。我缺乏本地经验。那么,如果这两个组件位于容器中,那么滚动就不起作用了?我不认为您将“静态”数组与“动态”数组连接起来,然后在
renderItem()中使用一些额外的逻辑是不好的。这可能是最简单的方法了。@devserkan滚动可以工作,但它们会有单独的滚动,也就是说,当你滚动动态元素组件时,静态元素会留在那里,动态元素列表会在其内部滚动。我不想把它们作为两个独立的实体展示给用户。我真的希望有一种合适的方式来实现它,因为这对我来说就像是一种方式。不过,非常感谢!:)