@connect
ใช้งานได้ดีเมื่อฉันพยายามเข้าถึงร้านค้าภายในส่วนประกอบการตอบสนอง แต่ฉันจะเข้าถึงมันอย่างไรในรหัสบิตอื่น ตัวอย่างเช่นสมมติว่าฉันต้องการใช้โทเค็นการอนุญาตสำหรับการสร้างอินสแตนซ์ axios ที่สามารถใช้ได้ทั่วโลกในแอพของฉันสิ่งที่จะเป็นวิธีที่ดีที่สุดในการบรรลุเป้าหมายนั้น
นี่เป็นของฉัน 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
ตอนนี้ฉันต้องการเข้าถึงจุดข้อมูลจากร้านค้าของฉันนี่คือสิ่งที่จะดูเหมือนถ้าฉันพยายามดึงข้อมูลภายในส่วนประกอบที่ตอบสนองโดยใช้ @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() {...}
}
มีข้อมูลเชิงลึกหรือรูปแบบเวิร์กโฟลว์ใด ๆ
api
ในApp
คลาสและหลังจากได้รับโทเค็นการอนุญาตที่คุณสามารถทำได้api.defaults.headers.common['Authorization'] = this.props.auth.tokens.authorization_token;
และในเวลาเดียวกันคุณสามารถเก็บไว้ใน localStorage ได้เช่นกันดังนั้นเมื่อผู้ใช้รีเฟรชหน้าเพจคุณสามารถตรวจสอบว่ามีโทเค็นอยู่ใน localStorage หรือไม่ ใช่คุณสามารถตั้งค่าได้ฉันคิดว่าจะเป็นการดีที่สุดที่จะตั้งค่าโทเค็นในโมดูล api ทันทีที่คุณได้รับ