javascript - 使用 RxJS 和 axios,如何在 React 组件中获取 onClick 数据?
问题描述
我正在努力解决如何在 React 组件中使用 RxJS 和 axios onClick 获取数据。但越来越近了,我想。我尝试过的任何尝试要么在组件安装时运行,而不是 onClick,要么甚至在 onClick 时根本不运行。
基本上,如何调用 onClick 以及如何传递有效负载。网上似乎没有任何东西可以解释这一点,我希望这是一种常见的情况。
const MyComponent = () => {
const [data, setData] = useState(null);
const getData$ = new Subject(observer => {
axios
.post(`/my-url/`, **how to get payload to here**)
.then(response => {
observer.next(response.data);
observer.complete();
})
.catch(error => {
observer.error(error);
});
});
useEffect(() => {
const subs = getData$.subscribe({
next: res => setData(res),
});
return () => subs.unsubscribe();
}, []);
return (
<Button onClick={() => getData$.next(payload)} />
);
};
任何帮助表示赞赏。
解决方案
getData
你可以像这样传入有效载荷
const getData$ = (payload) => new Subject(observer => {
axios.post(`/my-url/`, payload)
.then(response => {
observer.next(response.data);
observer.complete();
})
.catch(error => {
observer.error(error);
});
});
这基本上只是创建了一个名为的匿名函数getData
,该函数返回您的Subject
. 这相当于:
const getData$ = function (payload) {
return new Subject(observer => {
axios.post(`/my-url/`, payload)
.then(response => {
observer.next(response.data);
observer.complete();
})
.catch(error => {
observer.error(error);
});
});
};
推荐阅读
- c# - 与 .NET Core 一起构建 Rust 项目
- cassandra - Cassandra - 对表格有什么保证
- state - 无限状态自动机
- c - 将 uint64_t 分解为 uint8_t 数组 - C
- python - 如何从字符串文字构建字符串对象?
- ag-grid - 如何在 ag 网格中更新服务器端行模型类型中的行/设置行数据?
- docker-compose - Docker-compose 卷映射到外部 USB 驱动器
- python - CUDA GPU processing: TypeError: compile_kernel() got an unexpected keyword argument 'boundscheck'
- python - 如何使用包含列表中值的字典扩展 pydatable 的列?
- java - 从文件中读取数组元素时出现 NullPointerException 错误 - Java