import { Subject } from 'rxjs';
import { debounceTime } from 'rxjs/operators';
.
.
.
const onSearch$ = new Subject().pip(debounceTime(1500))
const HOGE = () => {
const [state, dispatch] = useReducer(initialState, dispatch);
const refChildText = useRef(null);
useEffect(() => {
const onSearch = onSearch$.subscribe(( value )=> {
dispatch({value})
})
return () => (onSearch.subscription) onSearch.unsubscribe()
}, []);
const onChangeFilterUsersName = useCallback(() => {
if (refChildText.current) {
onSearch$.next(refChildText.current.value);
}
}, [refChildText.current]);
////
<Query query={HOGEHOGE} variables={value} >
<Comp.Provider
value={{
onClickPrev,
onClickNext,
onChangeFilterUsersName, //pass
refChildText //pass
}
///////
export const MessagedList = () => {
const {
me,
pageInfo,
threads,
totalCount,
refChildText,
messagesPerPage,
onChangeFilterUsersName
} = useContext(Comp);
return (
<p><input type='text' placeholder='ユーザー名で絞り込み' ref={refChildText} onChange={onChangeFilterUsersName} /></p>
)
Last active
May 29, 2019 02:26
-
-
Save kenmori/27df26cafaa9f28d4a358cf9dd32d728 to your computer and use it in GitHub Desktop.
[React x GraphQL x Rx.js] 入力された値を購読して1.5秒後にdispatchする検索機能
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment