小编Ruh*_*min的帖子

在路由更改时重置组件的内部状态

我正在使用 react-router-v4 和 react 16。

当用户转到不同的路线或返回相同的路线时,我想重置组件的内部状态。路由更改应该破坏组件的内部状态,但它不会。而且我什至找不到在路由更改时通知组件的方法,因为它是嵌套组件而不是组件的直接渲染Route。请帮忙。

这是代码或实时代码笔示例-

const initialProductNames = {
    names: [
        { "web applications": 1 },
        { "user interfaces": 0 },
        { "landing pages": 0 },
        { "corporate websites": 0 }
    ]
};

export class ProductNames extends React.Component {

state = {
    ...initialProductNames
};

animProductNames = () => {
    const newArray = [...this.state.names];
    let key = Object.keys(newArray[this.count])[0];
    newArray[this.count][key] = 0;

    setTimeout(() => {
        let count = this.count + 1;

        if (this.count + …
Run Code Online (Sandbox Code Playgroud)

reactjs react-router react-router-v4 react-router-dom

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

有没有办法为元素生成唯一的选择器,该选择器在刷新时或 DOM 位置更改时不会获得无效元素?

我正在使用 puppeteer 抓取该网站的用户配置文件。我有一个个人资料链接列表,用于转到每个个人资料页面并抓取每个用户的 twitter 链接、youtube 链接和其他信息。

示例配置文件

这是我用来为 twitter、youtube 和网站链接生成唯一选择器的配置文件。

我使用 chrome devtools 来获取唯一选择器,youtube 的选择器看起来像这样

youtube 抓取

但是在我共享的另一个个人资料中,它没有 youtube 链接,获取了 twitter 链接,但如果 youtube 链接不存在,我希望它为空。

获取 Twitter 链接而不是 Youtbe

并非所有用户都有 youtube 链接或 twitter 链接等。因此,这些独特的选择器在不同的配置文件中获得了错误的数据。

我知道选择器只是通过获取第 4 个项目来完成他们的工作(因为选择器是a:nth-child(4))但是我怎样才能获得一个唯一的选择器来只返回那种数据,例如 youtube 选择器获取 youtube 链接,如果没有链接,则它返回什么也没有。

还要记住,链接可以是随机的,以网站链接为例,每个用户都有不同的网站链接,因此您无法将 href 或 innerText 与预定义的关键字匹配。

javascript css css-selectors web-scraping puppeteer

4
推荐指数
1
解决办法
186
查看次数

在打包的软件包ReactJS中仅包含使用过的导入

我只想使用Material Ui库中的一个组件。我知道我只能使用ES6导入来导入一个组件,但是可以进行webpack握手和从库中删除其他组件,或者将它们包括在生产中。

请帮我。

reactjs webpack react-router material-ui

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