javascript - 当状态改变时发送带有状态数据的 ajax 请求

标签 javascript ajax reactjs

我有一个 React 组件,我在其中使用了一个日期选择器。根据所选的Date 值,我发送了一个ajax 请求来获取数据。 我没有使用任何框架,例如 redux 或 flux。

export default class MyComponent extends Component {
    constructor(props) {
        super(props);
    }

    componentDidMount() {
        // Initial fetch request based on the default date
    }

    onDateSelectionChanged(fromDate, toDate) {
        this.setState({
            fromDate,
            toDate
        });
    }

    render() {
        return (
            <div className="row">
                <DateRangePicker callBackParent = {this.onDateSelectionChanged}/>
                {/* other stuff */}
            </div>
        );
    }
}

现在假设我将日期更改为另一个日期。再次获取数据的最佳方法是什么?我应该在 onDateSelectionChanged 中再次触发请求还是有任何生命周期方法?

最佳答案

我强烈建议将 ajax 逻辑与您的组件分离。请记住,纯 React 的构建只是为了简化 View 的呈现,而不是为了像 Http 调用这样的复杂逻辑。

使用 Flux,您可以快速创建用于处理应用的 UI 渲染和任何其他逻辑的基础设施。

完整教程为here但我会添加一个快速摘要,以便您可以轻松入门。

添加 4 个将成为您的基础架构的类:

  1. YourComponentActions - 此类将处理您的组件将触发的“ Action ”。一个 Action 实际上是一个事件,它将从您的组件触发到将执行实际逻辑的东西(第 4 点)。
  2. SharedConstans - 此类将保存您应用的事件名称。

  3. AppDispatcher - 此类将管理您的事件处理 应用。

  4. YourComponentStore - 此类将注册到操作的事件并处理 http 调用。这是与 UI 分离的组件逻辑。在收到来自 ajax 调用的响应后,您将从商店触发另一个事件,您的组件将注册到它,然后才更新状态。

感觉很复杂,但是从现在开始,您可以轻松地向您的应用程序添加任何逻辑,同时保持应用程序的解耦、可读性和易于维护。 阅读更多有关助焊剂的信息 here .

关于javascript - 当状态改变时发送带有状态数据的 ajax 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35701646/

相关文章:

javascript - JS递归构建对象

javascript - 在 Node REPL 中,Promise 中的副作用在定义函数时运行,而不是在调用函数时运行

javascript - 为什么当我更改其中一个时所有日期选择器值都变为空值?

css - 支持网站上的最小宽度

javascript - 如何在新的 React Router v4 中访问历史对象

javascript - 如何在Node和浏览器js中正确使用Unicode和UTF-8特殊字符?

javascript - 为什么有这么多 jquery ajax 文件?

javascript - 如何让我的脚本连续提交两个表单?

jquery - 我怎样才能显示这个json数据

javascript - 为什么 AJAX 会破坏插件?