- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在制作一个模式,当用户单击平面列表按钮或项目时会弹出,用户将在其中看到有关他/她单击的项目的详细信息。基本上,我想将平面列表的项目传递给模态。
我实际上已经完成了模式的弹出窗口,现在我必须显示菜单描述和菜单价格等详细信息。我在 stackoverflow 中找到了一篇帖子,我按照其中的所有内容进行了操作,但是我遇到了关于“id ”的错误,我不知道如何解决它。
这是我的代码
细节.js
import React, {Component} from 'react';
import {Text, TouchableHighlight, View,
StyleSheet, Platform, FlatList, AppRegistry,
TouchableOpacity, RefreshControl, Dimensions, Modal, TextInput, TouchableWithoutFeedback, Keyboard
} from 'react-native';
import AddModal from '../Modal/AddModal';
var screen = Dimensions.get('window');
const DismissKeyboard = ({ children }) => (
<TouchableWithoutFeedback onPress = {() => Keyboard.dismiss()}>
{children}
</TouchableWithoutFeedback>
);
export default class Details extends Component {
static navigationOptions = {
title: ''
};
constructor()
{
super ()
this.state = {
data: [],
showModal: false,
id: null,
}
}
fetchData = async() => {
const { params } = this.props.navigation.state;
const response_Cat = await fetch('http://192.168.254.101:3307/categories/' + params.id);
const category_Cat = await response_Cat.json();
this.setState({data: category_Cat});
};
componentDidMount() {
this.fetchData();
};
_onRefresh() {
this.setState({ refreshing: true });
this.fetchData().then(() => {
this.setState({ refreshing: false })
});
};
_onPressItem(id) {
this.setState({
modalVisible: true,
id: id
});
}
_renderItem = ({item}) => {
return (
<TouchableHighlight
id = { item.menu_desc }
onPress = { this._onPressItem(item.menu_desc) }
>
<View>
<Text>{ this.state.id }</Text>
</View>
</TouchableHighlight>
)
};
render() {
const { params } = this.props.navigation.state;
return (
<View style = { styles.container }>
<AddModal
modalVisible = { this.state.modalVisible }
setModalVisible = { (vis) => { this.setModalVisible(vis) }}
id = { this.state.id }
/>
<FlatList
data = { this.state.data }
renderItem = { this._renderItem }
keyExtractor={(item, index) => index}
/*refreshControl = {
<RefreshControl
refreshing = { this.state.refreshing }
onRefresh = { this._onRefresh.bind(this) }
/>
}*/
/>
</View>
);
}
}
const styles = StyleSheet.create({
...
})
//AppRegistry.registerComponent('Details', () => Details);
AddModal.js
import React, {Component} from 'react';
import {Text, TouchableHighlight, View,
StyleSheet, Platform, FlatList, AppRegistry,
TouchableOpacity, RefreshControl, Dimensions, TextInput, Modal
} from 'react-native';
export default class AddModal extends Component {
constructor(props) {
super(props);
this.state = {
showModal: false,
id: null
};
}
componentWillReceiveProps(nextProps) {
this.setState({
showModal: nextProps.showModal,
id: nextProps.id,
})
}
render() {
return (
<Modal
animationType="slide"
transparent={ true }
visible={ this.state.modalVisible }
onRequestClose={() => { this.props.setModalVisible(false) }}>
<View>
<View>
<Text>{ this.state.id }</Text>
<TouchableHighlight
onPress = {() => { this.props.setModalVisible(false) }}
>
<Text>Hide Modal</Text>
</TouchableHighlight>
</View>
</View>
</Modal>
)
}
}
最佳答案
只是想指出您代码中的一个问题(与“id”错误无关,id 错误已由 digit
回答)。在renderItem
函数,你正在调用 onPress = { this._onPressItem(item.menu_desc) }
, 应该改为
onPress = { () => this._onPressItem(item.menu_desc) }
我想,您会调用 onPressItem
当用户点击列表项时。
编辑:
我做了一些更改以使您的代码正常工作。以下是更改。
在你的AppModal.js
,您正在 showModal: nextProps.showModal
中设置模态可见性, 但在 <Modal ...>
你设置了visible
.也在
= { this.state.modalVisible }Details.js
你写了<AddModal modalVisible ...
>.
首先我改了showModal
至 modalVisible
在Details.js
在AppModal.js
.
Details.js
constructor()
{
super ()
this.state = {
data: [],
modalVisible: false,
id: null,
}
}
然后我改了_onPressItem(id)
至 _onPressItem = (id)
在 renderItem
中进行了更改作为
<TouchableHighlight
id = { item.enName }
onPress = { () => this._onPressItem(item.enName) }
>
在render
功能我已将模态可见性设置为
<AddModal
...
setModalVisible = { (vis) => { this.setState({
modalVisible: vis
})
}}
...
/>
AppModal.js
已更改 showModal
至 modalVisible
constructor(props) {
super(props);
this.state = {
modalVisible: props.modalVisible,
d: null
};
}
componentWillReceiveProps(nextProps) {
this.setState({
modalVisible: nextProps.modalVisible,
id: nextProps.id,
})
}
在构造函数中,我添加了 modalVisible: props.modalVisible
.
希望这会有所帮助!
关于javascript - React Native - 带有 Flatlist 项目的模态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50422403/
当我们有大数据时如何优化 Flatlist 的性能。 我的列表既有图片又有文字说明。 我想找到一种方法来提高列表的性能并删除从缓存列表中加载的额外图像,并使列表不重。 最佳答案 FlatList 组件
我在 flatlist 之前有一个 flatlist 元素和另一个元素。当我向上滚动时,flatlist 之前的元素不会上升并且是固定的。有没有办法让它在faltlist向上滚动的时候上升? 例子:
我在一个父级 FlatList 中渲染多个 FlatList 子级 {item.name} HOW DO I
我的列表组件是这样的: ( )} keyExtractor={() => cuid.slug()} ListHeaderComponent={}
我无法创建嵌套在具有相同方向的 FlatList 内的 FlatList; 结果是父级是水平的,而子级是垂直的; 这是我的代码: renderSlides(question) { return
我想显示一个平面列表,但我有一个问题。在手机底部,我无法显示帖子的完整性,也不要滚动到它。我不知道为什么。有些问题?我尝试了一些有风格的间距东西,但这不像我想要的那样工作。 import React,
我有一个垂直的 FlatList 组件和两个按钮作为 TouchableOpacity,我如何使用按钮执行 FlatList 的滚动, 即“将 FlatList 滚动到底部”和“将 FlatList
我有一个垂直的 FlatList 组件和两个按钮作为 TouchableOpacity,我如何使用按钮执行 FlatList 的滚动, 即“将 FlatList 滚动到底部”和“将 FlatList
是否可以使用 实现平面列表? react 原生网络 在保持可见内容的同时在哪里添加数据? 现在,当您添加某些内容时,它会跳到 Flatlist 的顶部。我正在使用 onContentSizeChang
我有这个代码 class Home extends Component { constructor(props) { super(props); this.state = {
我在一个屏幕中有一个静态组件和许多 for 循环渲染组件。 所有代码都在下面。 import React from "react"; import { View, Text, FlatList } f
请帮助我在我的应用程序上实现拉动刷新,我对 native react 有点新,谢谢。我不知道如何处理 onRefresh 和刷新。 class HomeScreen extends Component
我有以下情况:渲染函数中屏幕上有一个 FlatList: render() { console.log('In render'); const { data } = this.
我遇到了 FlatList 问题,我正在尝试使用从数据库获取的数据来渲染图像。但什么也没有出现。我可以从控制台看到数据,正如您在此处看到的: 但是当我尝试访问照片时,它给了我两个错误: 类型错误:无法
我想渲染 FlatList有两个数组 name和photo 。希望我的FlatList每个项目都包含名称和照片。 但我不知道如何将它们合并到我的 FlatList 中数据。 console.log 我
我有一个 FlatList,当状态发生变化时它不会重新渲染。如何让 FlatList 重新渲染? _renderItem = ({item}) => { if(item=='null'){
是否可以将 FlatList 的背景颜色设置为透明? 我有应用程序背景图像并想将其用作屏幕背景。 但是FlatList中的ListItem似乎需要设置一些颜色。同样的问题也适用于标题。 re
如何在 FlatList 中替换颜色? I tried the following example ,但我无法让它工作。 下面是我的代码: _renderItem = ({ item, index }
我正在实现 FlatList,但它没有提供所需的渲染输出。 这是我的代码: App.js import React from 'react'; import Main from './componen
在我的应用程序中,我使用 axios 获取数据。正如我们所知,我们不能将 FlatList 中的数据渲染为一个对象,它必须是一个数组。当我从服务器获取数据时,如果它是单个项目,它就是对象,如果它不止一
我是一名优秀的程序员,十分优秀!