小编koo*_*koo的帖子

反应钩useEffect()清理仅componentWillUnmount吗?

让我解释一下此代码的结果,以便轻松地询问我的问题。

const ForExample = () => {
    const [name, setName] = useState('');
    const [username, setUsername] = useState('');

    useEffect(() => {
        console.log('effect');
        console.log({
            name,
            username
        });

        return () => {
            console.log('cleaned up');
            console.log({
                name,
                username
            });
        };
    }, [username]);

    const handleName = e => {
        const { value } = e.target;

        setName(value);
    };

    const handleUsername = e => {
        const { value } = e.target;

        setUsername(value);
    };

    return (
        <div>
            <div>
                <input value={name} onChange={handleName} />
                <input value={username} onChange={handleUsername} />
            </div>
            <div> …
Run Code Online (Sandbox Code Playgroud)

reactjs react-hooks

31
推荐指数
4
解决办法
2万
查看次数

React钩子useEffect仅在更新时有效吗?

如果要限制useEffect仅在组件安装时运行,则可以添加useEffectwith的第二个参数[]

useEffect(() => {
  // ...
}, []);
Run Code Online (Sandbox Code Playgroud)

但是,如何使useEffect该组件仅在组件被更新(除了初始安装)的那一刻才运行?

reactjs react-hooks

22
推荐指数
5
解决办法
5231
查看次数

如何将 jwt 令牌存储在 localStorage 中并将其发送回带有 express 标头的服务器?

我在 stackoverflow 中阅读了很多文章,也看过很多 youtube 视频,但没有找到演示将 jwt 保存到 localstorage的流程的示例代码- 使用授权标头发送回服务器以验证.

这是我想要做的。

当客户端登录到服务器时,服务器给出令牌并将其保存到客户端localStorage(或sessionStorage)。

每当客户端调用只能使用令牌访问的 api 时,客户端从 取回令牌localStorage,并将该令牌与授权标头(req.headers.[x-access-token]req.headers.[authorization])一起发送到服务器。

但是我读过的所有文章都在用邮递员解释这个问题,邮递员没有说明如何将其存储到localStorage授权标头中。

我是否必须localStorage.setItem在服务器将令牌提供给客户端时使用,localStorage.getItem并在将该令牌发送回服务器之前使用 and和new Headers()withappend()axios之前使用?

示例不必针对快速用户,但我想了解一下想法。

express jwt

9
推荐指数
2
解决办法
1万
查看次数

总是使用 renderToStaticMarkup() 而不是 renderToString()?

根据 react 文档,renderToString()创建了 React 内部使用的额外 DOM 属性,例如 data-reactroot 而renderToStaticMarkup不会。

而且我认为这ReactDOM.hydrate()使事件处理程序能够附加到通过字符串呈现的标记renderToString(),这要归功于额外的 DOM 属性,例如 data-reactroot。

但我自己测试过,它ReactDOM.hydrate()也适用于通过 呈现的静态标记renderToStaticMarkup(),这意味着组合ReactDOM.hydraterenderToStaticMarkup()成功地将事件处理程序附加到字符串呈现的 DOM。

根据Dan Abramov 的问题hydrate()不依赖于内部反应属性(data-reactroot)

相反,使用 hydrate() 明确告诉 React 对现有 HTML 进行水合。那么它不会取决于 data-reactroot 是否存在。

所以我可能猜测使用renderToStaticMarkup()而不是总是更好renderToString(),因为性能会通过以下方式得到更好的优化renderToStaticMarkup()

ReactDOM.renderToString()在 React v16 上发布 hydr() 之前,这只是一种旧方法,只能与render()and一起使用dangerouslySetInnerHTML()吗?

我认为我们总是可以使用renderToStaticMarkup()over 可以renderToString()吗?

这个问题与我的问题有关,但还没有明确的答案。

reactjs

7
推荐指数
0
解决办法
149
查看次数

存储在数据库中的会话真的违反了 RESTful 原则吗?

我读过很多文章说会话违反了无状态性REST

如果用户登录服务器,服务器会将会话cookie(ssid)提供给客户端,并将会话数据(用户数据)存储在服务器中,在本例中为内存。

它违反了无国籍状态,这是有道理的。

但是会话存储在数据库中怎么样?

如果用户登录服务器,服务器将会话cookie( ssid)提供给客户端,并将会话数据存储在mysql数据库中,而不是存储在内存中。

这是否也违反了无国籍状态?

如果是这样,“会话存储在数据库中”和“用户请求正在查询数据库数据”有什么区别?

当客户端发出请求时,它们都从数据库中提取一些数据。

显然,后者并不违反无状态性,否则REST建筑永远不会如此受欢迎。

我之前的问题,关于数据库的 RESTful 违规,回答者说“它没有违规”

反之亦然,会话真的违反了 RESTful 吗?回答者说“是的,这是违规的”。但该答案可能绑定到唯一的服务器端(内存)。

如此迷茫。

rest

6
推荐指数
1
解决办法
526
查看次数

标签 统计

reactjs ×3

react-hooks ×2

express ×1

jwt ×1

rest ×1