我想循環(huán)讀取d01.json、d02.json、d03.json三個(gè)數(shù)據(jù),但是第一次render讀不到數(shù)據(jù)為什么?
怎么寫循環(huán)讀取數(shù)據(jù)
dataRead.js
import React from 'react';
import Data01 from './data/d01.json';
import Data02 from './data/d02.json';
import Data03 from './data/d03.json';
class Basic extends React.Component {
constructor() {
super();
this.state = {
data: ''
}
}
componentDidMount(){
let taskArray = Data01.task;
var taskNames = []
for(var tname in taskArray){
taskNames[tname] = taskArray[tname]['name']
}
this.setState({taskNames: taskNames})
}
render() {
console.log('==============taskNames==============')
console.log(this.state.taskNames)
const taskNames = this.state.taskNames;
var divStyle = {
}
return (
<div id style={divStyle} className='data-line'>
{taskNames}
</div>
)
}
}
export default Basic;
d01.json
{
"code": 100,
"msg": "success",
"task": [
{
"name": "任務(wù)1111111:開(kāi)始了",
"id": "1,2,3"
},
{
"name": "任務(wù)二:準(zhǔn)備中",
"id": "2,3,5,6,7"
},
{
"name": "任務(wù)三:進(jìn)行中",
"id": "5,6,7"
},
{
"name": "任務(wù)四:執(zhí)行了",
"id": "10,12,15"
},
{
"name": "任務(wù)五:結(jié)束了",
"id": "21,23,25"
}
]
}
d02.json
{
"code": 200,
"msg": "success",
"task": [
{
"name": "任務(wù)2222222:開(kāi)始了",
"id": "1,2,3"
},
{
"name": "任務(wù)二:準(zhǔn)備中",
"id": "2,3,5,6,7"
},
{
"name": "任務(wù)三:進(jìn)行中",
"id": "5,6,7"
},
{
"name": "任務(wù)四:執(zhí)行了",
"id": "10,12,15"
},
{
"name": "任務(wù)五:結(jié)束了",
"id": "21,23,25"
}
]
}
d03.json
{
"code": 300,
"msg": "success",
"task": [
{
"name": "任務(wù)三:開(kāi)始了",
"id": "1,2,3"
},
{
"name": "任務(wù)二:準(zhǔn)備中",
"id": "2,3,5,6,7"
},
{
"name": "任務(wù)三:進(jìn)行中",
"id": "5,6,7"
},
{
"name": "任務(wù)四:執(zhí)行了",
"id": "10,12,15"
},
{
"name": "任務(wù)五:結(jié)束了",
"id": "21,23,25"
}
]
}
import React from 'react';
import returnData from './data/data01.json';
import './taskArray.css';
class Basic extends React.Component {
constructor (props) {
super(props)
this.state = {
taskNames: '', // 任務(wù)名稱
taskIds: '', // 任務(wù)ID
changeValue: '', // 任務(wù)欄改變值
taskList_div: false,
isShowAll: false, // 這個(gè)是控制 要不要 顯示所有任務(wù)
clickLiName: '', // 這個(gè)默認(rèn)是顯示第一個(gè)
isClickedLi: false, // 這個(gè)是默認(rèn)沒(méi)有點(diǎn)擊過(guò)li
isLocked: false,
hideOneLiIndex: 0
}
this._initialize()
}
handleOnMouseEnter () {
this.setState({isShowAll: true})
}
handleOnMouseLeave () {
this.setState({isShowAll: false})
}
_initialize() {
let taskArray = returnData.task;
var taskNames = []
for(var tname in taskArray){
taskNames[tname] = taskArray[tname]['name']
}
this.setState({taskNames: taskNames})
this.setState({clickLiName: taskNames[0]})
var taskIds = []
for(var tid in taskArray){
taskIds[tid] = taskArray[tid]['id']
}
this.setState({taskIds: taskIds})
}
componentDidMount() {
/*
console.log('組件正式開(kāi)始渲染')
if (!this.state.isClickedLi) {
this.swiper()
}
*/
}
renderLi (name, index) {
return (
this.state.hideOneLiIndex !== index
? <li key={name} onClick={this.handleClickedLi.bind(this, name, index)} className={'locking_ul_li'}>
{name} </li> : null)
}
handleClickedLi (name, index) {
this.setState({
isClickedLi: true,
clickLiName: name, // 顯示的第一個(gè)
isShowAll: false,
hideOneLiIndex: index
})
}
swiper() {
/*
function callFunction(){
console.log(1);
}
var timeTask=setInterval(function(){
var date=new Date();
var h=date.getHours();
var m=date.getMinutes();
var s=date.getSeconds();
callFunction(h);
},1000);
*/
var _self = this;
let i = 0;
let content = this.state.taskNames;
function callFunction(i){
console.log(content[i])
_self.setState({clickLiName: content[i]})
}
var timeTask=setInterval(function(){
var date=new Date();
var h=date.getHours();
var m=date.getMinutes();
var s=date.getSeconds();
callFunction(i);
if (i === content.length) {
i = 0;
}
},1000);
}
// 處理鎖定函數(shù)
handleLockingClick (){
this.setState({
isLocked: !this.state.isLocked
})
}
render () {
const taskNames = this.state.taskNames;
console.log('==============taskNames==============')
console.log(taskNames)
/* 總體 */
var frameDiv = {
height: 30,
width: 132,
backgroundColor: '#13CDF4',
position: 'absolute',
left: 600,
top:83
}
var substance = {
height: 30,
width: 132,
backgroundColor: '#13CDF4',
position: 'absolute',
left: 900,
top:83
}
return (
<div className='primaryStyle'>
{/* 選擇 鎖定與未鎖定 onmouseenter onmouseleave */}
{/* 選擇 鎖定與未鎖定 onmouseenter onmouseleave */}
<div className={'cs_locking_frame'} style={frameDiv}>
<div className={'cs_locking_list'} onMouseLeave={this.handleOnMouseLeave.bind(this)}>
<div className={'cs_locking_clickLiName'}
onMouseEnter={this.handleOnMouseEnter.bind(this)}>
{this.state.clickLiName}
</div>
{this.state.taskNames && this.state.taskNames.length != 0?
<ul className={'locking_ul'}>
{taskNames.map((item, index) => {
return !this.state.isShowAll ? null : this.renderLi(item, index)
})}
</ul>: ''
}
</div>
</div>
<div className={'cs_locking_substance'} style={substance}>
{this.state.isClickedLi?
<span onClick={this.handleLockingClick.bind(this)}>鎖定</span> : <span>未鎖定</span>
}
</div>
</div>
)
}
}
export default Basic;
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。