今日份收獲(1th)
一、時間戳轉(zhuǎn)換為日期:
timestampToDate(timestamp) {
var date = new Date(timestamp);
var Y = date.getFullYear();
var Mon = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1);
var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() ;
var H = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() ;
var Min = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() ;
var S = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() ;
return (
{year:Y,month:Mon,day:D,hours:H,minutes:Min,seconds:S}
)
}
//console.log(timestampToDate(1398250549123))
//{ year: 2014,month: '04', day: 23, hours: 18, minutes: 55,seconds: 49 }
- 可以依據(jù)自己需要的格式進行輸出
- 注意變量名別取重復(fù)了,第一次寫月和分的變量名都寫了M,結(jié)果可想而知
- React里面的時間戳轉(zhuǎn)換可以使用:
import moment from 'moment' //引入
moment(需要轉(zhuǎn)換的時間).format('YYYY-MM-DD HH:mm:ss')
//2018-08-13 21:10:29
//測試 如果 mm ss 寫成大寫的會出錯
二铛只、React Modal組件的使用
如果遇到我這樣的程序猿,你可能想打人糠溜;
別人:Modal用得十分順利淳玩,遮罩層的顏色很淺,很完美
Me:昨天中午用的Modal比別人的遮罩層顏色黑了三個度非竿,
開始懷疑人生蜕着,找了樣式發(fā)現(xiàn)顏色一樣,開始懷疑電腦汽馋。。
晚上再用圈盔,wo要死了豹芯,遮罩層好比天都黑了。驱敲。铁蹈。
Why?emmmm:歷史教訓(xùn)告訴我,別把Modal寫在循環(huán)里面(第一次循環(huán)了3個众眨,第二次十多個吧握牧,天黑也很正常,保持微笑)
三娩梨、State 的更新是異步的
其他甚好的原理記得去看大佬的解釋沿腰,我的記憶已經(jīng)深深地提醒我:調(diào)用setState,組件的state并不會立即改變狈定,比如:
//selectedTab 初始值為 all 修改后應(yīng)該為 NoPay
onChange={(tab, index) => {
console.log('111', this.state.selectedTab) //setState 前輸出
this.setState({
selectedTab: tab.sub
}, () => { console.log('222', this.state.selectedTab) }) //setState 回調(diào)
console.log('333', this.state.selectedTab) //setState 后立馬輸出颂龙,還在onChange內(nèi)
}}
selectedTab 初始值為 all
修改后應(yīng)該為 NoPay
上面的函數(shù)執(zhí)行后輸出的結(jié)果將會是:
111 all
333 all
222 NoPay
結(jié)果可以顯示出,當(dāng)setState完后纽什,并沒有立即改變了state的值措嵌,所以如果在onChange這個函數(shù)內(nèi)使用這個state的值你會覺得自己setState失敗了,但是其實并沒有芦缰,從回調(diào)函數(shù)中可以看到企巢,這個值已經(jīng)被改變了,但是是要離開當(dāng)前函數(shù)才能看到修改后的值
so:當(dāng)發(fā)現(xiàn)自己的setState沒有起作用的時候让蕾,可以考慮一下是否還沒有在值被改變的時候使用了state的值
另外還有一個尚未理解的問題:
看到的資料都說浪规,只有setState可以改變state的值或听,但是下面這種情況是如何實現(xiàn)改變state的值?
onChange={(tab, index) => {
this.state.listUserOrder.type = tab.sub
this.setState({
listUserOrder: this.state.listUserOrder
})
this.ListUserOrder()
}}
上面這個代碼是先改變了state中一個listUserOrder的type的值罗丰,然后通過
執(zhí)行setStatelistUserOrder: this.state.listUserOrder
,是可以實現(xiàn)修改state的值的神帅,這種也算是setState的方式嗎?這樣子的話是不是說:資料說的只有setState可以改變state的值萌抵,不能單純賦值改變指的是:單純賦值可以改變state一時的值找御,而只有通過setState才能夠被保存下來使用?
四绍填、Reat里面事件綁定吧
吃過n多次虧霎桅,傳不了值,都是因為this的問題讨永,像寫了個async的接口請求滔驶,在render中調(diào)用的時候,就會發(fā)現(xiàn)又不起作用了卿闹,現(xiàn)在的條件反射是:沒有寫箭頭函數(shù)/bind(this)
onLeftClick={ this.onGoback}
無效
onLeftClick={() => this.onGoback()}
有效
用bind(this)也會有效
有待深入研究