我有一个组件TreeNav,其数据来自api调用。我已经设置了reducer / action / promise和所有管道,但是在组件渲染中,当我对数据调用map()时,得到“ Uncaught TypeError:无法读取未定义的属性'map'”。
故障排除显示TreeNav render()被调用两次。第二次是从api返回数据之后。但是由于第一个render()错误,第二个render()从未运行。
这是我的代码文件:
-------- reducers / index.js ---------
import { combineReducers } from 'redux';
import TreeDataReducer from './reducer_treedata';
const rootReducer = combineReducers({
treedata: TreeDataReducer
});
export default rootReducer;
Run Code Online (Sandbox Code Playgroud)
-------- reducers / reducer_treedata.js ---------
import {FETCH_TREE_DATA} from '../actions/index';
export default function (state=[], action) {
switch (action.type) {
case FETCH_TREE_DATA: {
return [action.payload.data, ...state];
}
}
return state;
}
Run Code Online (Sandbox Code Playgroud)
-------- actions / index.js --------
import axios from 'axios';
const ROOT_URL = 'http://localhost:8080/api';
export const FETCH_TREE_DATA …Run Code Online (Sandbox Code Playgroud) 在以下代码中,如果我使用:
for line in fin:
Run Code Online (Sandbox Code Playgroud)
它只执行'a'
但如果我使用:
wordlist = fin.readlines()
for line in wordlist:
Run Code Online (Sandbox Code Playgroud)
然后它执行直通z.
但是立即readlines()读取整个文件,这是我不想要的.
怎么避免这个?
def avoids():
alphabet = 'abcdefghijklmnopqrstuvwxyz'
num_words = {}
fin = open('words.txt')
for char in alphabet:
num_words[char] = 0
for line in fin:
not_found = True
word = line.strip()
if word.lower().find(char.lower()) != -1:
num_words[char] += 1
fin.close()
return num_words
Run Code Online (Sandbox Code Playgroud)