小编Nic*_*les的帖子

结合不使用 Redux 的 Reducer

我有一个没有 redux 的应用程序,我使用钩子和钩子 useReducer + 上下文处理全局状态。我有 1 个 useReducer,它就像一个 Redux 商店。但要做到这一点,我只能发送 1 个减速器。在那个减速器中,我拥有状态的所有逻辑,但我想在其他减速器中分离该减速器的一些功能。在 redux 中有 combineReducer 来做到这一点。但是使用钩子+上下文,我该怎么做?如何在 useReducer 中组合多个 reducer 将其发送到我的 Global Provider?

//Global Provider
const [state, dispatch] = useReducer(reducer, {
        isAuthenticated: null,
        user: {},
        catSelect: 10,
        productsCart,
        total
 });

//reducer with all cases
export default function(state , action ){

    switch(action.type) {
        case SET_CURRENT_USER:
           return etc...
        case SET_CATEGORIA:
           return etc...
        case 'addCart':
            return etc...
        case etc....
        default: 
            return state;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在这有效。但是 reducer 包含的“案例”与其他“案例”做的事情完全不同。例如一个“案例”用于认证,另一个“案例”添加产品,另一个“案例”消除供应商等。

使用 Redux,我会创建更多的 reducer(auth、shopCart、供应商等)并使用 combineReducer 来控制所有这些。

如果没有 …

store reducers reactjs react-context react-hooks

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

搜索加载了 JS 的项目时,Scrapy 飞溅无法正常工作

我正在使用带有scrapy splash 的scrapy 从一些URL 获取数据,例如这个产品url或这个产品url 2

我有一个等待时间的 Lua 脚本并返回 HTML:

script = """
            function main(splash)
              assert(splash:go(splash.args.url))
              assert(splash:wait(4))
              return splash:html()
            end
"""
Run Code Online (Sandbox Code Playgroud)

然后我执行它。

yield SplashRequest(url, self.parse_item, args={'lua_source': script},endpoint='execute')
Run Code Online (Sandbox Code Playgroud)

从这里我需要 3 个元素,它们是 3 种不同的产品价格。这 3 种都加载了 JS。

价格

我有 xpath 来获取 3 个元素。但问题是有时行得通有时行不通

    price_strikethrough = response.xpath('//div[@class="price-selector"]/div[@class="prices"]/span[contains(@class,"active-price strikethrough")]/span[1]/text()').extract_first() 
    price_offer1 = response.xpath('//div[@class="price-selector"]/div[@class="prices"]/div[contains(@class,"precioDescuento")][1]/text()').extract_first()
    price_offer2 = response.xpath('//div[@class="price-selector"]/div[@class="prices"]/div[contains(@class,"precioDescuento")][2]/text()').extract_first()
Run Code Online (Sandbox Code Playgroud)

我不知道还能做些什么才能使其正常工作。我曾尝试更改等待值,但结果相同。有时它工作正常,有时我没有得到数据。我怎样才能确保我总能得到我需要的数据?

python lua scrapy web-scraping scrapy-splash

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

Matter.js 矩形内的文本

我有一些用 Matter.js 创建的矩形,如下所示:Bodies.rectangle (getRandomInt (200,400), 50,140,50, {restitution: 0.7, timeScale: 0.5}) 但现在我需要在该矩形内添加文本。我怎么能这么做呢?文档对于此类操作并不清楚

javascript matter.js

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

Python json.loads 返回字符串

我有这个数据

我将它解析为 JSON,不久前它对我有用

json_data = json.loads(data)
print(json_data['plp']['plp_products']) #OK
Run Code Online (Sandbox Code Playgroud)

但现在我有这个错误:"TypeError: string indices must be integers". 如果我打印 json_data 的“类型”,会给我一个 str :

<class 'str'>

我如何转换该数据以再次将其用作 JSON?我特别需要使用节点json_data['plp']['plp_products']

谢谢

python json

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