小编Lai*_*zer的帖子

为可重用 React 组件和浏览器历史设计状态

我正在寻找在我的 React 组件中构建状态的方法,以便我可以一起实现两个目标:(1) 在复杂的应用程序中管理浏览器历史记录,以及 (2) 让单个组件可以在主应用程序之外的环境中轻松重用。

该应用程序有一个面板组件,可让用户导航和阅读我们网站上的内容。在主应用程序中,可以打开多个面板并将其排列在一起。在主应用程序之外,还有其他页面,我希望能够轻松放入单个 Panel 组件。

到目前为止,随着这段代码的发展,每个面板都有一个丰富的状态,表示它加载了什么内容和其他显示设置。这使得进入另一个页面变得容易——我可以只渲染一个 Panel 组件,用户可以与它交互,它会自行处理。

然而,对于浏览器历史记录,这变得越来越麻烦。有一个 App 组件可以管理多个面板以及推送到历史记录和从历史记录中弹出的状态。为了让它对整个应用程序的状态有一个完整的了解,当发生变化时,每个面板都会推送其状态的副本。当状态从历史记录中弹出时,App 组件可以从它呈现的每个面板传递一个初始状态。正如您可以想象的那样,随着更新周期最终相互循环,这变得混乱和容易出错。

感觉我需要采取的方法是集中状态(这是这里的建议)并尝试使每个单独的面板无状态。由于重写setState代码中已经存在的所有调用将是一项巨大的努力,因此我正在尝试评估这是否是唯一的方法。感觉这种方法会使重用应用程序外部的组件变得更加困难。我将失去 Panel 是一个独立组件的感觉,我可以只在页面上呈现它,因为它还需要某种外部管理器来处理它的状态以及从内部更改它的所有事件。

你会推荐什么?

javascript reactjs

5
推荐指数
1
解决办法
123
查看次数

在不使用状态和动作的情况下同步两个 React 组件的滚动

我试图在 React 中同步两个不同组件的滚动,这样如果我在一个组件中滚动一个组件,另一个组件也会滚动。两者的比例不同,所以我每次都必须计算偏移量。

我不想使用状态和动作(我使用的是 redux),因为它会因为重新渲染每个鼠标滚动而损害我的性能(我也尝试过去抖动/节流)。

我有一个包装器组件,它呈现另外两个组件,如下所示:

class Wrapper extends React.Component {
  render() {
    return (
      <div>
        <FirstComponent />
        <SecondComponent />
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用ref但它不适用于自定义组件(我得到了undefined),无论如何这看起来都是 react/redux 的反模式。

关于如何在不损害性能并尽可能接近 React/Redux 模式的情况下实现这一目标的任何建议?

javascript reactjs redux

5
推荐指数
3
解决办法
4172
查看次数

无需登录即可识别网站用户?

我想创建一段可嵌入许多不同网站(小部件)的代码.

我的代码有没有办法在没有用户登录的情况下识别用户?也就是说,我可以使用浮动在Web上的任何已建立的身份机制来跨这个小部件的实例可靠地识别它们吗?

我不需要(也不应该)利用有关此用户的任何信息,只需识别它们即可.

这些网站将是异类的; 不能保证它们会有任何共同的方面,因此小部件代码需要完全自包含.

openid authentication identity web-applications

3
推荐指数
2
解决办法
2209
查看次数

底图可以在城市层面绘制详细的海岸线吗?

我正在尝试使用Python中的Basemap绘制纽约地区的详细海岸线.使用全分辨率数据集,曼哈顿看起来像矩形,哈德森根本没有出现在市中心.

这是我正在使用的代码.有什么建议?

    from mpl_toolkits.basemap import Basemap
import matplotlib.pyplot as plt
import numpy as np

m = Basemap(projection='merc',llcrnrlat=40.55,urcrnrlat=40.82,\
            llcrnrlon=-74.1, urcrnrlon=-73.82, lat_ts=40.5,resolution='f')
m.drawcoastlines()
m.drawrivers()
m.fillcontinents(color='coral',lake_color='aqua')
m.drawmapboundary(fill_color='aqua') 
plt.show()
Run Code Online (Sandbox Code Playgroud)

编辑

在进一步的探索中,看起来我的问题是河流,特别是.我可以得到海洋海岸线的详细边界,但仍然没有哈德逊河和哈莱姆河.当前代码:

m = Basemap(projection='merc',llcrnrlat=40.55,urcrnrlat=40.82,\
            llcrnrlon=-74.1, urcrnrlon=-73.82, lat_ts=40.5,resolution='f')
m.drawmapboundary(fill_color='#85A6D9')
m.drawcoastlines(color='#6D5F47', linewidth=.4)
m.drawrivers(color='#6D5F47', linewidth=.4)
m.fillcontinents(color='white',lake_color='#85A6D9')
plt.show()
Run Code Online (Sandbox Code Playgroud)

python matplotlib

3
推荐指数
1
解决办法
6485
查看次数

Git 合并而无需暂存更改

我想在一个分支中合并而不暂存自动合并的文件以进行提交。我预计合并会很混乱,我想git diff在提交之前使用它来查看所有更改。该--no-commit标志阻止提交完成,但文件仍处于暂存状态。有没有办法在不暂存文件以进行提交的情况下进行合并?

git

2
推荐指数
2
解决办法
980
查看次数

解压关键字参数(kwargs)的正确方法

使用关键字参数,您不能只引用字典中的潜在关键字值,因为它们可能不存在。引用可能存在或不存在的关键字值的最佳方法是什么?我发现自己在做这样的事情:

def save_link(link, user, **kwargs):

    if "auto" in kwargs:
        auto = kwargs["auto"]
    else:
        auto = False
Run Code Online (Sandbox Code Playgroud)

为了提供默认值并创建可靠存在的变量。有没有更好的办法?

python keyword-argument

0
推荐指数
1
解决办法
4703
查看次数