javascript - 控制台结果不正确?当调用 getUrlParam 函数时

标签 javascript reactjs

Utils.js:

// getUrlParam() is get location function

getUrlParam(name){
    let queryString = window.location.search.split('?')[1],
        reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'),
        result = queryString.match(reg);
    return decodeURIComponent(result[2])
}

登录组件:

class Login extends Component{
    constructor(props){
        super(props)
        this.state = {
            redirect: _utils.getUrlParam('redirect')
        }
    }
}

// _user.login() is backend login interface
// UserInfo include username and password

login(){
    _user.login(UserInfo).then((res) => {
        console.log(this.state.redirect)
    })
}

当我点击“按钮”时,如果位置是“http://localhost:8088/login?redirect=%2Fcategory%2Findex”,我想要得到的结果是“/category/index”,但现在我得到的结果是“/”? enter image description here

最佳答案

稍微改变一下你的正则表达式:

var name = 'redirect';
var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)');

var url = 'http://localhost:8088/login?redirect=%2Fcategory%2Findex';

var queryString = url.split('?')[1];
var match = queryString.match(reg);

console.log(decodeURIComponent(match[2]));

关于javascript - 控制台结果不正确?当调用 getUrlParam 函数时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49425091/

相关文章:

javascript - 为什么它只对原来设置的mount数据加/减7

javascript - Ruby on Rails ExecJS::Pages 中的运行时错误#home

css - 在表格的最后一行使用 select 放置滚动条

javascript - 如何在具有更多参数的函数中使用 e.preventDefault()?

javascript - 多重数据过滤

javascript - 在新的 React 图表中使用从 Highcharts 编辑器导出的数据

javascript - 如何更新 React 状态中的单个属性(函数组件)

javascript - ES6 类方法在 forEach 循环内不返回任何内容

javascript - jQuery 最小宽度与宽度 : How to remove px?

javascript - 为每 3 个项目创建一个新行 Vue.js