生成隨機數(shù),判斷是否在前一次的數(shù)組中出現(xiàn),如果不是就push到新數(shù)組里。
const generatorRandomArray = (function() {
//用于保存前一次計算得到的數(shù)組
let savedArray = [];
//生成隨機數(shù)的函數(shù)
function generatorRandom(n) {
return Math.ceil(Math.random() * n);
}
return function(n) {
let newArray = [];
for (let i = 0; i < 5; i++) {
var num;
while (true) {
num = generatorRandom(n);
//判斷隨機數(shù)是否在前一次數(shù)組中出現(xiàn)
if (!savedArray.includes(num) && !newArray.includes(num)) {
break;
}
}
newArray.push(num);
}
savedArray = [...newArray];
return newArray;
};
})();
函數(shù)接受一個參數(shù)表示隨機數(shù)的邊界,比如generatorRandomArray(300)表示生成的隨機數(shù)在1~300
你現(xiàn)在vue-devtools里面看下getters里面有沒有你定義的這個名稱,如果沒有說明你vuex有問題
在組件中定義一個屬性,假設叫 beforeDataProcess,該屬性傳入的是一個函數(shù),作用就是:將后端返回的數(shù)據(jù)轉化為組件需要的數(shù)據(jù)格式
舉個例子,假設組件需要的數(shù)據(jù)格式是:
{
name: 'xxx',
id: 'xxx'
}
后端傳的數(shù)據(jù)格式是:
{
name: 'xxx',
value: 'xxx'
}
此時我可以定義 beforeDataProcess 如下:
beforeDataProcess (rawData) {
return {
name: rawData.name,
id: rawData.value
}
}
那么拿到后端數(shù)據(jù)的時候,組件內部就可以調用 this.beforeDataProcess({ name: 'xxx', value: 'xxx' }) 將后端返回的數(shù)據(jù)轉為組件需要的數(shù)據(jù)格式
可以考慮分頁,前端可以一次性把數(shù)據(jù)都請求過來,但不要一次性全部渲染出來,在前端進行分頁,這樣每次點擊分頁只渲染對應的數(shù)據(jù)即可。
剛開始沒看明白,以為講的是業(yè)務組件的事情。去搜了文章看才明白怎么回事。
文章來自知乎,題主以后類似問題可以在題目中注明
https://zhuanlan.zhihu.com/p/...
這篇文章講的是組件庫的設計,全文有一個很明確的觀點,即組件庫應該給使用者足夠高的自由度,以避免組件與外部的耦合,提高組件的靈活性。紅圈這里的回調并不是指一般意義上的請求或者事件的回調函數(shù),而是指組件渲染的回調函數(shù),通常組件提供這類回調時為了讓使用者聲明組件具體的渲染方式,以及數(shù)據(jù)的處理邏輯。
有一個很好的例子是antd的Table組件,該組件提供了一個展開單行表格的功能。這里展開的內容就是通過回調函數(shù)來聲明的?;卣{函數(shù)提供每一行的數(shù)據(jù)(即紅圈處整個對象),由使用者負責處理數(shù)據(jù),并返回一個DOM結構。組件在實際渲染時,會循環(huán)調用這個回調函數(shù),將返回的DOM結構作為展開行的實際內容渲染。
如此一來,antd并不關心你傳入數(shù)據(jù)的結構或者屬性名,因此實現(xiàn)了和后端,也就是數(shù)據(jù)源的解耦
import { Table } from 'antd';
const columns = [
{ title: 'Name', dataIndex: 'name', key: 'name' },
{ title: 'Age', dataIndex: 'age', key: 'age' },
{ title: 'Address', dataIndex: 'address', key: 'address' },
{ title: 'Action', dataIndex: '', key: 'x', render: () => <a href="#">Delete</a> },
];
const data = [
{ key: 1, name: 'John Brown', age: 32, address: 'New York No. 1 Lake Park', description: 'My name is John Brown, I am 32 years old, living in New York No. 1 Lake Park.' },
{ key: 2, name: 'Jim Green', age: 42, address: 'London No. 1 Lake Park', description: 'My name is Jim Green, I am 42 years old, living in London No. 1 Lake Park.' },
{ key: 3, name: 'Joe Black', age: 32, address: 'Sidney No. 1 Lake Park', description: 'My name is Joe Black, I am 32 years old, living in Sidney No. 1 Lake Park.' },
];
ReactDOM.render(
<Table
columns={columns}
expandedRowRender={record => <p style={{ margin: 0 }}>{record.description}</p>}
dataSource={data}
/>
, mountNode);
一般是鍵值對匹配的吧,‘不知道哪張是哪張’是因為你們數(shù)據(jù)結構設計的有問題吧。
比如返回一個json串
{
"code" : 200,
"result" : {
"list" : [
{ "url":"http://abc.com/i1.png","title":"tlt1"},
{ "url":"http://abc.com/i2.png","title":"tlt2"},
{ "url":"http://abc.com/i3.png","title":"tlt3"}
],
"kv" : {
"key1" : "http://abc.com/i1.png",
"key2" : "http://abc.com/i2.png",
"key3" : "http://abc.com/i3.png",
}
}
}
一般第一種“l(fā)ist”是按順的排列形式,不用區(qū)分,
第二種是key-value的模式
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type com.qycloud.oatos.license.domain.User to type java.lang.String
類型轉換錯誤
使用 koa 的 ctx.attachment() 方法即可。
已經(jīng)解決該問題, 使用vuex提供的MutationsTree方法即可解決個報錯問題, mutations.ts中的代碼如下
//mutations.ts
import * as types from './mutations-types'
import { MutationTree } from 'vuex'
const mutations: MutationTree<any> = {
[types.INCREMENT_NUMBER](state, data:number): void {
state.initNumber += data;
}
}
export default mutations
bus只能傳遞數(shù)據(jù) 哪里能傳遞方法
bus.$emit('send',this.msg);
bus.$on('send',function(msg){
_this.msg = msg;
});
1) 只需要第一個就可以了.(上面文字有介紹,第二個的東西已經(jīng)包含在第一個里面了)
2) 接下來直接安裝就行了. 更多具體情況,你還是自己看文檔了.這種三言兩語也說不清.
如果身邊有熟悉的人,直接找身邊的人指導比較好.
function() use($data){}
更優(yōu)雅一些,但需要注意的是繼承過來的$data值與這個閉包聲明的上下文有關
例如:
[1]
$data = 1;
function() use($data){}//此時繼承的變量值為1
[2]
$data = 1;
function() use($data){}
$data = 2;
此時再調用閉包函數(shù),$data的取值為其聲明時的上下文的值,值為1
$data = 1;
$x = function() use ($data){
var_dump($data);
exit;
};
$data = 2;
function ttt($a)
{
$a();
}
ttt($x);
如果你對id的處理是在constructor或者componentDidMount,那么就不會更新,因為如果你只改變id,組件并不會銷毀,僅僅是props改變了,最多重新render一下。所以依賴于你對id怎么處理的
你把<a href="" name="a1">123</a>這句話中的href=""去掉就可以了,a標簽中有了href="",點擊a標簽的時候會強制刷新頁面,導致你自定義的click點擊因頁面刷新無效。
猜測你提交的時候并沒有先調用表單校驗的方法。
this.$refs[name].validate((valid) => {
if (valid) {
this.$Message.success('Success!');
// 到這里才進行提交表單
} else {
this.$Message.error('Fail!');
}
})不會有問題的, 你把幾個幾個函數(shù)簡化下只輸出一些文字, 排除函數(shù)執(zhí)行腳本出錯
在data定義一個PageSize,然后引用 :page-size="PageSize" ,然后在切換顯示條數(shù)函數(shù)寫上this.PageSize = pageSize;就可以了
...可能是滾動的太猛,scroll觸發(fā)多次,造成多次請求。設置個標志位試試,每次請求前檢查標志位,判斷是否正在請求,scroll加throttle函數(shù)。
鬧劇一場,上面的內容是主動重啟服務器時的日志記錄。節(jié)點1掛了,客戶搞錯了去重啟節(jié)點2才出現(xiàn)了上面的日志。沉痛的教訓,忙活大半天。
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構,是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學校辦產業(yè)為響應國家深化產教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復興的升級產業(yè)鏈。利用北京大學優(yōu)質教育資源及背
博為峰,中國職業(yè)人才培訓領域的先行者
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術, 熟練的跨平臺面向對象開發(fā)經(jīng)驗,技術功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術顧問,美國Dachieve 系統(tǒng)架構師,美國AngelEngineers Inc. 系統(tǒng)架構師。