如何使用context.state设置组件状态?

时间:2019-01-18 10:35:33

标签: reactjs

我最近遇到了React Context问题。

我有一些存储在本地存储中的数据,仅在上下文提供者没有可用数据时才打算使用。

localstorage中的数据存储在组件的状态下。 如果有来自上下文的可用数据,我想重写this.state。

挣扎的是,当上下文只能在render方法中使用时,我不知道如何设置状态。 在渲染器中调用setState是非常糟糕的做法,我不知道如何在渲染器之外获取context.state。

如果没有数据

下面有一些示例代码。

欢迎任何想法,这些想法使我更接近解决方案。

import numpy as np
X = np.random.randint(2, size=(6, 10))
Y = np.array([1, 1, 1, 2, 1, 2])
X

#array([[0, 1, 1, 0, 1, 1, 0, 1, 1, 0],
       [1, 1, 1, 0, 1, 1, 0, 0, 0, 0],
       [1, 0, 1, 1, 0, 0, 1, 0, 0, 0],
       [1, 0, 1, 1, 0, 1, 0, 0, 0, 1],
       [0, 0, 1, 0, 0, 0, 0, 1, 1, 1],
       [1, 1, 0, 1, 0, 0, 1, 0, 0, 0]])

from sklearn.naive_bayes import BernoulliNB
clf = BernoulliNB()
clf.fit(X, Y)

clf.feature_count_
#
array([[2., 2., 4., 1., 2., 2., 1., 2., 2., 1.],
       [2., 1., 1., 2., 0., 1., 1., 0., 0., 1.]])

clf.feature_log_prob_
#
array([[-0.69314718, -0.69314718, -0.18232156, -1.09861229, -0.69314718,
        -0.69314718, -1.09861229, -0.69314718, -0.69314718, -1.09861229],
       [-0.28768207, -0.69314718, -0.69314718, -0.28768207, -1.38629436,
        -0.69314718, -0.69314718, -1.38629436, -1.38629436, -0.69314718]])

2 个答案:

答案 0 :(得分:2)

您可以使用以下技巧访问渲染外部的上下文:

lsblk  
NAME                     MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda                        8:0    0     8G  0 disk 
|-sda1                     8:1    0   7.6G  0 part /
|-sda2                     8:2    0     1K  0 part 
`-sda5                     8:5    0   383M  0 part [SWAP]
sdb                        8:16   0    30G  0 disk 
`-sdb1                     8:17   0    30G  0 part 
`-storage1-home (dm-0) 254:0    0    30G  0 lvm  /home
sdc                        8:32   0    30G  0 disk 
`-sdc1                     8:33   0    30G  0 part 

sudo genfstab /
realpath: invalid option -- 'm'
Usage:
 realpath [-s|--strip] [-z|--zero] filename ...
 realpath -h|--help
 realpath -v|--version
==> ERROR:  is not a mountpoint

答案 1 :(得分:1)

进入Class.contextType,以访问类方法中的上下文。