需求:編輯后臺 過多且零散,想把不同項(xiàng)目(react,vue等)工程合在一個一個項(xiàng)目;因?yàn)楣こ塘刻螅酝ㄟ^iframe合在一起最方便。
主要思想:通過iframe的url 帶著參數(shù) 傳值給 另一個項(xiàng)目,然后另一個項(xiàng)目接受參數(shù)。我們主要解決的是 賬號互通。所以通過url,把參數(shù)帶過去,然后通過cookie主動存儲起來。
主工程 傳參
import React, { Component } from 'react';
const { cookie } = "*****"; //自己定義的方法 ,忽略
// djqUrl 在env 文件下,主要是 根據(jù)環(huán)境 讀取 測試服/正式服 的 地址
import {djqUrl} from 'env';
export default class extends Component {
constructor(props) {
super(props);
}
render() {
// 讀取 token,uid 然后通過 iframe URL 傳參
// 需要在 另一個項(xiàng)目 讀取參數(shù),并存起來
let loginToken = cookie.get("loginToken");
let loginUid = cookie.get("loginUid");
let src = `${djqUrl}tinyManage?loginToken=${loginToken}&loginUid=${loginUid}`
return (
<iframe src={src}
width="100%"
height="100%"
id="oldCommunityId"
position="relative"
overflow="auto"
/>
)
}
}
接受參數(shù) 的工程
取決你這個項(xiàng)目 是單頁面路由 還是 多頁面
- 單頁面 可以通過this.props.location.query,當(dāng)然,不同路由版本說不定不一樣,可以打印this.props
- 多頁面 可以通過 window.location.search ,或者打印window.location
// 這個是單頁面
const query = this.props.location.query;
// console.log(query,'實(shí)驗(yàn)11111111111')
if(Object.keys(query).length <= 1){
message.error("存儲 loginToken 失敗")
}else{
const loginToken = query.loginToken;
const loginUid = query.loginUid;
cookie.delete("loginToken")
cookie.delete("loginUid")
cookie.set('loginToken',loginToken,0.5);
cookie.set('loginUid',loginUid,0.5);