如何在 Connect 组件下的 graphql 查询中使用 $filter 变量?
How to use the $filter variable on graphql query under the Connect component?
我有一个从 aws AppSync 自动生成的简单查询,我正在尝试使用连接组件和 FlatList,并使用 TextInput 来过滤和自动更新列表。但我承认我没有找到这样做的方法...有什么提示吗?
试图找到更多关于此的信息但没有成功...
自动生成的查询:
export const listFood = `query ListFood(
$filter: ModelFoodFilterInput
$limit: Int
$nextToken: String
) {
listFood(filter: $filter, limit: $limit, nextToken: $nextToken) {
items {
id
name
description
...
我目前的代码,我不太清楚在哪里放置我的过滤器值:
<Connect query={graphqlOperation(queries.listFood)}>
{
( { data: { listFood }, loading, error } ) => {
if(error) return (<Text>Error</Text>);
if(loading || !listFood) return (<ActivityIndicator />);
return (
<FlatList
data={listFood.items}
renderItem={({item}) => {
return (
<View style={styles.hcontainer}>
<Image source={{uri:this.state.logoURL}}
style={styles.iconImage}
/>
<View style={styles.vcontainer}>
<Text style={styles.textH3}>{item.name}</Text>
<Text style={styles.textP}>{item.description}</Text>
</View>
</View>
);
}}
keyExtractor={(item, index) => item.id}
/>
);
}
}
</Connect>
我的目标主要是通过 item.name 进行过滤,在从 TextInput 键入时刷新列表,可能会在 $filter 变量上的某个位置...
好的,我想我已经了解了 AWS AppSync 开箱即用查询的用法...
query MyFoodList{
listFood(
filter: {
name: {
contains:"a"
}
}
) {
items {
id
name
}
}
}
它终于可以在我的 react-native 代码上正常工作了:
<Connect query={ this.state.filter!=="" ?
graphqlOperation(queries.listFood, {
filter: {
name: {
contains: this.state.filter
}
}
})
:
graphqlOperation(queries.listFood)
}>
我仍然没有设法使排序键起作用...如果我没有得到任何东西,我会再尝试一下并为其打开另一个主题...
这是在 React 中使用的过滤器 / Javascript:
const [findPage, setFindPage] = useState('') // setup
async function findpoints() {
// find user & page if exists read record
try {
const todoData = await API.graphql(graphqlOperation(listActivitys, {filter : {owner: {eq: props.user}, page: {eq: action}}}))
const pageFound = todoData.data.listActivitys.items // get the data
console.log('pageFound 1', pageFound)
setFindPage(pageFound) // set to State
} catch (err) {
console.log(err)
}
}
异步/等待方法意味着代码将尝试运行,并继续执行代码的其他区域,在找到数据时通过 setFindPage 将数据放入 findPage
我有一个从 aws AppSync 自动生成的简单查询,我正在尝试使用连接组件和 FlatList,并使用 TextInput 来过滤和自动更新列表。但我承认我没有找到这样做的方法...有什么提示吗?
试图找到更多关于此的信息但没有成功...
自动生成的查询:
export const listFood = `query ListFood(
$filter: ModelFoodFilterInput
$limit: Int
$nextToken: String
) {
listFood(filter: $filter, limit: $limit, nextToken: $nextToken) {
items {
id
name
description
...
我目前的代码,我不太清楚在哪里放置我的过滤器值:
<Connect query={graphqlOperation(queries.listFood)}>
{
( { data: { listFood }, loading, error } ) => {
if(error) return (<Text>Error</Text>);
if(loading || !listFood) return (<ActivityIndicator />);
return (
<FlatList
data={listFood.items}
renderItem={({item}) => {
return (
<View style={styles.hcontainer}>
<Image source={{uri:this.state.logoURL}}
style={styles.iconImage}
/>
<View style={styles.vcontainer}>
<Text style={styles.textH3}>{item.name}</Text>
<Text style={styles.textP}>{item.description}</Text>
</View>
</View>
);
}}
keyExtractor={(item, index) => item.id}
/>
);
}
}
</Connect>
我的目标主要是通过 item.name 进行过滤,在从 TextInput 键入时刷新列表,可能会在 $filter 变量上的某个位置...
好的,我想我已经了解了 AWS AppSync 开箱即用查询的用法...
query MyFoodList{
listFood(
filter: {
name: {
contains:"a"
}
}
) {
items {
id
name
}
}
}
它终于可以在我的 react-native 代码上正常工作了:
<Connect query={ this.state.filter!=="" ?
graphqlOperation(queries.listFood, {
filter: {
name: {
contains: this.state.filter
}
}
})
:
graphqlOperation(queries.listFood)
}>
我仍然没有设法使排序键起作用...如果我没有得到任何东西,我会再尝试一下并为其打开另一个主题...
这是在 React 中使用的过滤器 / Javascript:
const [findPage, setFindPage] = useState('') // setup
async function findpoints() {
// find user & page if exists read record
try {
const todoData = await API.graphql(graphqlOperation(listActivitys, {filter : {owner: {eq: props.user}, page: {eq: action}}}))
const pageFound = todoData.data.listActivitys.items // get the data
console.log('pageFound 1', pageFound)
setFindPage(pageFound) // set to State
} catch (err) {
console.log(err)
}
}
异步/等待方法意味着代码将尝试运行,并继续执行代码的其他区域,在找到数据时通过 setFindPage 将数据放入 findPage