【发布时间】:2017-05-16 06:08:23
【问题描述】:
我知道关于这个错误有很多问题,我已经完成了所有我能找到的。
我认为这可能与缺少 getInitialState 有关,但我不确定如何实现它。
我正在尝试在文件夹中创建文本文件的动态列表,通过 frontMatter 模块从文件本身中提取信息。
import React from 'react'
import frontMatter from 'front-matter'
import fs from 'fs'
import { getFileList } from '../util/utils'
export default class DList extends React.Component {
static async getInitialProps () {
return getFileList('./static/filecontainer/').then((files) => {
const linkParams = files.nameList.map((fileName, i) => {
const content = fs.readFileSync(files.pathList[i], 'utf-8')
const meta = frontMatter(content)
return {
name: fileName,
title: meta.attributes.title,
date: meta.attributes.date,
description: meta.attributes.description,
}
})
return {
linkParams: linkParams
}
})
}
render () {
return (
<div id="listContainer">
{
this.props.linkParams.map((el, i) => {
return (
<div className="itemBlock">
<div id="nameBlock"><div id='tFileTitle'>{el.title}</div><div id='tFileDate'>{el.date}</div></div>
<div id="descriptBlock"><p className='tFileInfo'>{el.description}</p></div>
</div>
)
})
}
</div>
)
}
}
这是getFileList 函数:
import yaml from 'js-yaml'
export async function getFileList (dirname) {
return new Promise((resolve, reject) => {
fs.readdir (dirname, (error, files) => {
if (error) {
reject(error);
} else {
files.reverse()
resolve({
pathList: files.map( el => dirname + el ),
nameList: files.map( el => el.slice(0, -3) )
})
}
})
})
}
所以我的想法是创建一个小框来显示所有信息,然后我可以将这些信息导入到主页上它自己的 div 中。
import Header from '../components/Header'
import DList from '../components/DList'
export default () => (
<div>
<Header />
<div id="contentWrap">
<div id="leftContent"><DList /></div>
<div id="rightContent"></div>
</div>
</div>
)
【问题讨论】:
-
"getFileList 函数可以在这里找到:pastebin.com/T8uCWSTk" 欢迎来到 Stack Overflow!您问题的全部内容必须在您的问题中in,而不仅仅是链接。链接腐烂,使问题及其答案对未来的人们毫无用处,人们不应该离开现场来帮助你。将minimal reproducible example 放入 问题中,最好使用 Stack Snippets(
<>工具栏按钮)使其可运行。更多:How do I ask a good question?(我已经把它放在你的问题中了。) -
“Next.js - 无法读取未定义的属性 'map'” 在您的第一个引用代码块中有两次对
.map的调用。哪一个导致错误?! -
所以,
.map的四个实例中哪个实例失败了
标签: javascript reactjs next.js