Skip to content

Commit 9309a4c

Browse files
author
vvo
committed
fix: reduce the dependency between REACT components and helper
At first when I saw the component had a propType that included the full helper I thought "Maybe that's too much". What do you think @bobylito? Would this also help testing/exporting individual react component in npm modules?
1 parent 5f3329d commit 9309a4c

File tree

2 files changed

+11
-14
lines changed

2 files changed

+11
-14
lines changed

components/SearchBox/index.js

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,17 @@ var React = require('react');
44
var bem = require('../BemHelper')('as-search-box');
55
var cx = require('classnames');
66

7-
var AlgoliasearchHelper = require('algoliasearch-helper/src/algoliasearch.helper');
8-
var SearchResults = require('algoliasearch-helper/src/SearchResults');
9-
107
var SearchBox = React.createClass({
118
propTypes: {
12-
helper: React.PropTypes.instanceOf(AlgoliasearchHelper),
13-
results: React.PropTypes.instanceOf(SearchResults),
14-
onFocus: React.PropTypes.func,
159
placeholder: React.PropTypes.string,
16-
inputClass: React.PropTypes.string
10+
inputClass: React.PropTypes.oneOfType([
11+
React.PropTypes.string,
12+
React.PropTypes.array
13+
]),
14+
setQuery: React.PropTypes.func,
15+
search: React.PropTypes.func
1716
},
1817
render: function() {
19-
var onFocus = this.props.onFocus;
2018
var classNames = cx(bem('input'), this.props.inputClass);
2119

2220
return (
@@ -28,15 +26,12 @@ var SearchBox = React.createClass({
2826
autoComplete="off"
2927
autoFocus="autofocus"
3028
onChange={this.change}
31-
onFocus={onFocus}
3229
role="textbox" />
3330
);
3431
},
3532
change: function(e) {
36-
var value = e.target.value;
37-
var helper = this.props.helper;
38-
39-
helper.setQuery(value).search();
33+
this.props.setQuery(e.target.value);
34+
this.props.search();
4035
}
4136
});
4237

widgets/searchbox/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
var React = require('react');
44

55
var utils = require('../../lib/widgetUtils');
6+
var bind = require('lodash/function/bind');
67

78
function searchbox(params) {
89
var SearchBox = require('../../components/SearchBox');
@@ -12,7 +13,8 @@ function searchbox(params) {
1213
init: function(initialState, helper) {
1314
React.render(
1415
<SearchBox
15-
helper={helper}
16+
setQuery={bind(helper.setQuery, helper)}
17+
search={bind(helper.search, helper)}
1618
placeholder={params.placeholder}
1719
inputClass={params.addClass} />, container
1820
);

0 commit comments

Comments
 (0)