@connect
hoạt động tuyệt vời khi tôi đang cố gắng truy cập vào cửa hàng trong một thành phần phản ứng. Nhưng làm thế nào tôi nên truy cập nó trong một số mã khác. Ví dụ: giả sử tôi muốn sử dụng mã thông báo ủy quyền để tạo phiên bản axios có thể được sử dụng trên toàn cầu trong ứng dụng của mình, cách tốt nhất để đạt được điều đó là gì?
Đây là của tôi api.js
// tooling modules
import axios from 'axios'
// configuration
const api = axios.create()
api.defaults.baseURL = 'http://localhost:5001/api/v1'
api.defaults.headers.common['Authorization'] = 'AUTH_TOKEN' // need the token here
api.defaults.headers.post['Content-Type'] = 'application/json'
export default api
Bây giờ tôi muốn truy cập một điểm dữ liệu từ cửa hàng của mình, đây là giao diện nếu tôi cố tìm nạp nó trong một thành phần phản ứng bằng cách sử dụng @connect
// connect to store
@connect((store) => {
return {
auth: store.auth
}
})
export default class App extends Component {
componentWillMount() {
// this is how I would get it in my react component
console.log(this.props.auth.tokens.authorization_token)
}
render() {...}
}
Bất kỳ hiểu biết hoặc mô hình quy trình công việc ra khỏi đó?
api
trong App
và sau khi nhận được mã thông báo ủy quyền bạn có thể làm api.defaults.headers.common['Authorization'] = this.props.auth.tokens.authorization_token;
, đồng thời bạn cũng có thể lưu trữ trong localStorage, vì vậy khi người dùng làm mới trang, bạn có thể kiểm tra xem mã thông báo có tồn tại trong localStorage không và nếu nó không, bạn có thể thiết lập nó. Tôi nghĩ rằng tốt nhất là đặt mã thông báo trên mô-đun api ngay khi bạn nhận được nó.