在过去的几天里,我一直有这个问题,似乎无法深究这个问题.我们正在做一个非常基本的节点/快速应用程序,并尝试使用以下内容提供我们的静态文件:
app.use(express.static(path.join(__dirname, "static")));
Run Code Online (Sandbox Code Playgroud)
这完全符合我的预期.我们的静态文件夹中有一些用于css和javascript的文件夹.我们正在尝试使用此静态路径将css加载到EJS视图中:
<link rel="stylesheet" type="text/css" href="/css/style.css">
Run Code Online (Sandbox Code Playgroud)
当我们/到达我们的路线时,我们获得了所有内容,但我们的CSS没有加载.我们特别得到这个错误:
拒绝从' http:// localhost:3000/css/style.css ' 应用样式,因为其MIME类型('text/html')不是受支持的样式表MIME类型,并且启用了严格的MIME检查.
npm verify cacherm -rf node_modulesnpm installpath.join(__dirname, '/static/')app.get("/", function(req, res) {
res.render("search");
});
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html>
<head>
<title>Search for a Movie</title>
<link rel="stylesheet" type="text/css" href="/static/css/style.css">
</head>
<body>
<h1>Search for a movie</h1>
<form method="POST" action="/results">
<label for="movie-title">Enter a movie title:</label><br>
<input id="movie-title" type="text" name="title"><br>
<input type="submit" value="Submit Search">
</form>
</body> …Run Code Online (Sandbox Code Playgroud) 为什么将组件存储为状态值是不好的做法?
const [Component, setComponent] = useState<JSX.Element>(<Empty />);
Run Code Online (Sandbox Code Playgroud)
假设我想根据许多不同的标准(所有条件都是互斥的)有条件地渲染一个组件。但在实际渲染之前,我想添加一个去抖动器(在x不活动的毫秒后延迟渲染)。我不一定会这样做,但它似乎更直观,并且只需将组件分配为状态值(在这种情况下)的代码就更少。我可以设置我的状态来保存文本值,在任何地方引用该值,并设置一个映射变量以将字符串映射到组件。但这似乎没有必要。我在网上读到这是一种不好的做法,你应该只将数据放入状态,但每个人似乎都方便地忽略了为什么这是一种不好的做法。文档中似乎没有任何内容表明这是不好的做法。
这是一个有效的示例,希望能够说明为什么在状态中设置组件很方便。每个Message组件都会被记住,React.memo因此它们的 props 不会改变:
import React, { useState, useEffect } from 'react';
import useDebounce from '../../hooks/useDebounce';
import {
TooShort,
NoPrompt,
LimitWarning,
LimitReached,
Empty,
} from './Messages';
interface Props {
promptAreaTouched: boolean;
promptText: string;
debounceTimeout?: number;
}
const DEBOUNCE_TIMEOUT = 2000;
const SHORT_PROMPT_LENGTH = 5;
const APPROACHING_PROMPT_LENGTH = 40;
const MAX_PROMPT_LENGTH = 50;
const PromptLengthMessage = ({
promptAreaTouched,
promptText,
debounceTimeout = DEBOUNCE_TIMEOUT, …Run Code Online (Sandbox Code Playgroud) debouncing ×1
express ×1
mime-types ×1
node.js ×1
react-hooks ×1
reactjs ×1
static-files ×1
typescript ×1