【发布时间】:2021-09-13 07:41:24
【问题描述】:
我已经从这个链接https://magarcia.io/2019/02/18/bloc-pattern-with-react-hooks阅读了教程 我只是不明白当使用新的搜索词调用 _query.next 时如何触发对 API 的搜索查询
见下面的代码。
export class SearchBloc {
private _results$: Observable<string[]>;
private _query$ = new BehaviorSubject<string>('');
constructor(private api: API) {
**this._results$ = this._query$.pipe(
switchMap((query) => {
return observableFrom(this.api.search(query));
})
);**
get results$(): Observable<string[]> {
return this._results$;
}
}
const SearchInput = () => {
const searchBloc = useContext(SearchContext);
const [query, setQuery] = useState('');
useEffect(() => {
searchBloc.query.next(query);
}, [searchBloc, query]);
return (
<input
type="text"
name="Search"
value={query}
onChange={({ target }) => setQuery(target.value)}
/>
);
};
假设 searchblock 被放置在上下文中,并且在输入更改期间,作为行为主题的查询被赋予一个新值 next(); api 查询如何或为什么执行? 我想我不明白
this._results$ = this._query$.pipe( switchMap((查询) => {
所以也许问题是,管道是如何工作的?它是否创建了一个将在调用 next 时执行的方法回调?结果赋值是什么意思?
任何能帮助我理解它的人都非常感激。
【问题讨论】:
标签: rxjs