javascript - 使用 reactjs 在 POST 后重定向

标签 javascript node.js post express reactjs

我已将 express 配置为路由到 redirect,如下所示:

在路由/redirect.js 中:

var express = require('express');
var router = express.Router();
router.post('/', function(req, res, next) {
    res.send('received POST data: ' + req.body.data); 
});
module.exports = router;

在 app.js 中:

...
var redirect = require('./routes/redirect');
var app = express();
...
app.use('/redirect', redirect);

在 component.jsx 中:

var React = require('react');
var Component = React.createClass({
    render: function(){
            return (
                <form>
                    <input type="text" ref="data" placeholder="Send some data"/>
                    <button onClick={this.handleSubmit}>Send</button>
                </form>
            );
        },

     handleSubmit: function() {
            var data = this.refs.data.getDOMNode().value;
            // TODO: how do I send 'data' as POST request and redirect to /redirect ?
            // i.e. POST and redirect to localhost:3000/redirect like in a classic 
            // form submit{action='redirect',method='post'} way 
        }
});

module.exports=Component;

我已经在代码的 TODO 部分包含了我的问题的描述。有没有一种方法可以在不安装各种插件的情况下纯粹使用 Node+React 来实现?

最佳答案

您可以使用大多数现代浏览器都支持的 fetch API。参见 MDN for reference

    var Component = React.createClass({
        render: function(){
                return (
                    <form>
                        <input type="text" ref="data" placeholder="Send some data"/>
                        <button onClick={this.handleSubmit}>Send</button>
                    </form>
                );
            },

         handleSubmit: function(e) {
                e.preventDefault();
                var data = this.refs.data.getDOMNode().value;
                fetch("<url to where to post>", {
                    method: "POST",
                    body: 'data'
                }).then(this.handleRedirect)                    
            },

        handleRedirect: function(res){
            if( res.status === 200 ){
                // redirect here
                // window.location.href = 'http://localhost:300/redirect';
            }else {
              // Something went wrong here
            }

        }
    });


    module.exports=Component;

希望对您有所帮助。

关于javascript - 使用 reactjs 在 POST 后重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33020603/

相关文章:

javascript - 在 promise 中循环直到另一个 promise 结束

javascript - Ember.js 使用普通对象查找不起作用

javascript - 需要来自导入类内部的模块

javascript - Mongoose,用一组ObjectID查询一个集合

python - 在 Python 中创建 POST 请求

javascript - 删除逗号以分隔 D3 中数千个轴标签的组

javascript - 如何基于 ViewPort 重定向我的 Ember 应用程序

node.js - Node Express JS 无法解析 JSON 正文

php - 使用 php 发送文件而不使用 POST 但使用 type=file

php - 从 iOS 9/Swift 2.0 发送 HTTP POST 请求时,PHP 服务器未收到正确的数据