【发布时间】:2020-01-14 23:58:16
【问题描述】:
我正在尝试将 rxjs debounceTime 与反应挂钩一起使用。这是我到目前为止的代码
const searchFriendSubject = new Subject();
const subscription = searchFriendSubject.pipe(debounceTime(1500)).subscribe(val => {
console.log('This is the value ', val);
});
const friendComponent = () => {
const [formData, setSearchTerm] = useState({
searchTerm: { value: '', valid: true }
});
const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
const newValue = e.target.value;
const formDataToSet = {
...formData,
...{ searchTerm: { valid: true, value: newValue } }
};
setSearchTerm(formDataToSet);
searchFriendSubject.next(newValue);
};
useEffect(() => {
const subscription = searchFriendSubject.pipe(debounceTime(1500)).subscribe(val => {
console.log('This is the value ', val);
});
return () => {
subscription.unsubscribe();
};
});
return (
<FriendSearchComponentStyles.containerBlock>
<input
type="text"
onChange={onChange}
></input>
</FriendSearchComponentStyles.containerBlock>
);
};
问题是订阅根本没有触发。如果我从effect 中删除subscription.unsubscribe();,则订阅有效,但会触发多次。
【问题讨论】:
-
谢谢,我会试试看。
-
感谢这解决了我的问题。
标签: rxjs react-hooks