『壹』 電腦顯示屏右上角顯示dva怎麼辦
首先,你要確認顯示器數據線兩端都插好了嗎?其次查看顯卡是不是插牢了。然後再看顯卡的獨立電源是否接上,如果這些都沒問題,那就是你的顯卡攤大事了。
『貳』 開啟電腦,顯示屏上出現模擬或dva字樣,沒畫面,鍵盤燈不亮,滑鼠亮著,怎麼不
那就是沒有信號輸入,始終檢測信號呢,是否視頻線沒有插好呢,還是顯卡有問題呢,可以替換法測試一下的。
『叄』 Dva快速入門,5分鍾入門10分鍾精通
dva 是一個基於 rex 和 rex-saga 的數據流方案,為了簡化開發體驗,dva 還額外內置了 react-router 和 fetch,所以也可以理解為一個輕量級的應用框架。
目前最流行的社區 React 應用架構方案如下
1.路由:React-Router
2.架構:Rex
3.非同步操作:Rex-saga
缺點:要引入多個庫,項目結構復雜。
dva 是將上面三個 React 工具庫包裝在一起,簡化了 API,讓開發 React 應用更加方便和快捷。
dva = React-Router + Rex + Rex-saga
React 本身只是一個 DOM 的抽象層,使用組件構建虛擬 DOM。
如果開發大應用,還需要解決2個問題。
·通信:組件之間如何通信
·數據流:數據如何和視圖如何串聯起來?路由和數據如何綁定?
1.通信問題
組件會發生三種通信
(1)向子組件發消息
(2)向父組件發消息
(3)向其他組件發消息
React 只提供了一種通信手段:傳參。對於大應用來說很不方便。
react本身的傳參是子組件通過父組件傳入的函數,將自己的值再傳回父組件。
2.數據流向:
數據的改變發生通常是通過用戶交互行為或者瀏覽器行為(如路由跳轉等)觸發的,當此類行為會改變數據的時候可以通過 dispatch 發起一個 action,如果是同步行為會直接通過 Recers 改變 State ,如果是非同步行為會先觸發 Effects 然後流向 Recers 最終改變 State。
// 1.創建應用
const app = dva();
// 2.注冊插件
app.use(createLoading());
// 3.注冊model
app.model(model);
// 4.取消model注冊,清理recers,effects和subscriptions
app.unmodel(namespace)
// 5.注冊路由
app.router(()=> );
// 6.啟動應用
app.start('#root');
在這6步當中,dva完成了使用React解決view層、rex管理model、saga解決非同步的主要功能。
Model 是 dva 最重要的部分,所有的應用邏輯都定義在它上面,可以理解為 rex、react-rex、rex-saga 的封裝。通常項目中一個模塊對應一個 model。
Model對象的屬性:
1.namespace
是該 Model 的命名空間,只能用字元串,不支持通過 . 的方式創建多層命名空間。
2.state:
該 Model 當前的數據狀態,直接決定了視圖層的輸出。
3.recers:
Action處理器,處理同步操作,可以看做是state的計算器,類似於rex中的recer,用來算出最新的state,是唯一可以修改state的地方,由action觸發,它有state和action兩個參數。
4.effects
Action處理器,處理非同步動作,基於Rex-saga實現。
內部使用 yield 關鍵字,標識每一步的操作(不管是非同步或同步)。
不能直接修改state,由action觸發,也可觸發action。
有action和effects兩個參數,effects包含put、call和select三個欄位,put用於觸發action,類似於dispatch,call用於調用非同步處理邏輯,select用於從state中獲取數據。
5.subscriptions
用於訂閱一個數據源,然後根據需要 dispatch 相應的 action。
相當於一個監聽器,可以監聽路由變化,滑鼠,鍵盤變化,伺服器連接變化,狀態變化等,這樣就可以根據不同變化做相應的處理,在這個subsription中的方法名是隨意定的,每次變化都會去調用裡面的所有方法,所以需要加相應的判斷。
subscriptions: {
setup({ dispatch , history }){
window .onresize =()=> {
//當瀏覽器的頁面的大小變化時觸發裡面的dispatch方法
dispatch ( type : "save")
}
},
onClick({ dispatch }){
document .addEventListener('click',()=> {
//當滑鼠點擊時觸發裡面的dispatch方法
dispatch ( type : "save")
})
}
}
寫完model和組件後,需要將model和組件連接起來。dva提供了connect方法,connect是一個函數,綁定State到View。connect後的組件可以獲取到dispatch和state。
import { connect } from "dva";
class Counter extends Component {
constructor(props){
super(props)
}
render(){
return <div>{this.props.example.initText}</div>
}
}
const mapStateToProps =(state)=>{
//這里的example表示後面用this.props.example獲取state(根節點)中exmpale命名空間中的state所有的數據
return {
example:state.example,
}
}
//把model層的數據傳遞到當前組件
export default connect(mapStateToProps)(Counter)
dispatch是一個函數方法,用來將Action發送到Model。
dispatch({
type: 'click-submit-button',
payload: this.form.data
})
被connect的Component會自動在props中擁有dispatch方法。
dva集成了isomorphic-fetch用於處理非同步請求,並且使用dva-cli初始化的項目中,已經在./src/utils/request.js中對fetch進行了簡單的封裝,可以在這里根據服務端API的數據結構進行統一的錯誤處理。
最後千萬注意:effects和recers中的方法不能同名,否則會產生死循環