反应路由器`this.props.history.push`-历史未定义

时间:2018-10-02 17:16:06

标签: reactjs react-router

我具有此注销功能:

data = [['a', 'b'],['d', 'e'], ['e'], ['c'], ['a', 'b'], ['c']]

results = {}
for d in data:
    t = tuple(d)
    if t not in results:
        results[t] = data.count(d)

print(results)

# OUTPUT
# {('a', 'b'): 2, ('d', 'e'): 1, ('e',): 1, ('c',): 2}

logOut = () => { axios .delete(`${apiUrl}/logout`) .then(response => { if (response.status === 204) { localStorage.removeItem('key', response.headers.authorization) localStorage.removeItem('id', response.data.id) // return <Redirect to="/login" /> this.props.history.push(`/login`) } }) .catch(error => { console.log(error) }) } 在其他场合也可以使用。但是在这里它说无法读取未定义的this.props.history.push('/something')。我尝试了push,该方法也不起作用。

我在做什么错了?

1 个答案:

答案 0 :(得分:5)

可能由于以下原因之一:

1-使用history.push时,您需要将组件传递给withRouter:

    import { withRouter } from 'react-router-dom

   // ... codes of component in here ...

    export default withRouter(componentName) // at the end of component

2- 是指axios,您需要使用其他名称在axios上定义此名称,并在axios中使用它,例如:

var that = this;

 // then use that in axios