将 Algolia react-instantsearch 与 react-native 结合使用
Using Algolia react-instantsearch with react-native
我正在尝试使用 react-native 获取新的 Algolia react-instantsearch 组件。
我一直在关注guide,但我完全卡住了。
基本上,每当我尝试在 <InstantSearch />
组件中添加我的 <SearchBox />
组件时,我的应用程序都会因 Expected a component class、got [object对象].
据我所知,我正在将 <SearchBox />
连接到 connectSearchBox
连接器,所以我不确定发生了什么。
代码(我做 有 appId、apiKey 和索引的实际值):
import React, {Component} from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
ListView,
TextInput,
Image,
} from 'react-native';
import {InstantSearch} from 'react-instantsearch/native';
import {connectSearchBox} from 'react-instantsearch/connectors';
import * as Styles from '../../styles/';
const SearchBox = connectSearchBox(({currentRefinement, refine}) =>
<TextInput
style={{height: 40, borderColor: 'gray', borderWidth: 1}}
onChangeText={(text) => refine(text)}
value={currentRefinement}
/>);
export default class InfiniteSearch extends Component {
constructor(props) {
super(props);
}
render() {
return (
<View style={styles.container}>
<InstantSearch
className="container-fluid"
appId="appId"
apiKey="apiKey"
indexName="indexName"
>
<SearchBox />
</InstantSearch>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
padding: 10,
},
});
尝试将 TextInput 包裹在搜索框中:
const SearchBox = connectSearchBox(({currentRefinement, refine}) => (
<TextInput
style={{height: 40, borderColor: 'gray', borderWidth: 1}}
onChangeText={(text) => refine(text)}
value={currentRefinement}
/>
));
这在 2.0.1 中已经解决:https://github.com/algolia/instantsearch.js/blob/e15d37362fcd1eb60b5476307160062321983f09/CHANGELOG.md#201-2016-12-15
谢谢!
我正在尝试使用 react-native 获取新的 Algolia react-instantsearch 组件。
我一直在关注guide,但我完全卡住了。
基本上,每当我尝试在 <InstantSearch />
组件中添加我的 <SearchBox />
组件时,我的应用程序都会因 Expected a component class、got [object对象].
据我所知,我正在将 <SearchBox />
连接到 connectSearchBox
连接器,所以我不确定发生了什么。
代码(我做 有 appId、apiKey 和索引的实际值):
import React, {Component} from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
ListView,
TextInput,
Image,
} from 'react-native';
import {InstantSearch} from 'react-instantsearch/native';
import {connectSearchBox} from 'react-instantsearch/connectors';
import * as Styles from '../../styles/';
const SearchBox = connectSearchBox(({currentRefinement, refine}) =>
<TextInput
style={{height: 40, borderColor: 'gray', borderWidth: 1}}
onChangeText={(text) => refine(text)}
value={currentRefinement}
/>);
export default class InfiniteSearch extends Component {
constructor(props) {
super(props);
}
render() {
return (
<View style={styles.container}>
<InstantSearch
className="container-fluid"
appId="appId"
apiKey="apiKey"
indexName="indexName"
>
<SearchBox />
</InstantSearch>
</View>
);
}
}
const styles = StyleSheet.create({
container: {
padding: 10,
},
});
尝试将 TextInput 包裹在搜索框中:
const SearchBox = connectSearchBox(({currentRefinement, refine}) => (
<TextInput
style={{height: 40, borderColor: 'gray', borderWidth: 1}}
onChangeText={(text) => refine(text)}
value={currentRefinement}
/>
));
这在 2.0.1 中已经解决:https://github.com/algolia/instantsearch.js/blob/e15d37362fcd1eb60b5476307160062321983f09/CHANGELOG.md#201-2016-12-15
谢谢!