小编the*_*ode的帖子

在mapStateToProps和mapDispatchToProps中使用ownProps arg有什么用?

我看到传递给Redux函数的函数mapStateToPropsmapDispatchToProps函数作为第二个参数.connectownProps

[mapStateToProps(state, [ownProps]): stateProps] (Function):

[mapDispatchToProps(dispatch, [ownProps]): dispatchProps] (Object or Function):
Run Code Online (Sandbox Code Playgroud)

什么是可选[ownprops]参数?

我正在寻找另一个例子来说明问题,因为Redux文档中已有一个例子

redux react-redux

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

为什么在没有mapStateToProps或mapDispatchToProps作为args的情况下调用connect函数?

在文档中的一个Redux示例中,调用connect函数时没有args.这可以在示例的底部看到.

import React from 'react'
import { connect } from 'react-redux'
import { addTodo } from '../actions'

let AddTodo = ({ dispatch }) => {
let input

return (
  <div>
    <form onSubmit={e => {
      e.preventDefault()
      if (!input.value.trim()) {
        return
      }
      dispatch(addTodo(input.value))
      input.value = ''
    }}>
      <input ref={node => {
        input = node
      }} />
      <button type="submit">
        Add Todo
      </button>
    </form>
  </div>
 )
}

AddTodo = connect()(AddTodo)

export default AddTodo
Run Code Online (Sandbox Code Playgroud)

根据我的理解,connect函数的目的是让容器组件以回调的形式访问动作调度程序,以及以道具的形式从商店访问状态.

因此,在没有指定要为组件提供访问权限的状态和操作创建者的情况下调用connect的原因没有意义.

react-redux

8
推荐指数
1
解决办法
4802
查看次数

如何在Redux reducer中以不可变的方式交换数组元素?

相关的Redux状态由表示层的对象数组组成.

例:

let state = [
    { id: 1 }, { id: 2 }, { id: 3 }
]
Run Code Online (Sandbox Code Playgroud)

我有一个名为moveLayerIndex的Redux动作:

actions.js

export const moveLayerIndex = (id, destinationIndex) => ({
    type: MOVE_LAYER_INDEX,
    id,
    destinationIndex
})
Run Code Online (Sandbox Code Playgroud)

我希望reducer通过交换数组中元素的位置来处理动作.

减速器/ layers.js

const layers = (state=[], action) => {
    switch(action.type) {
        case 'MOVE_LAYER_INDEX':
Run Code Online (Sandbox Code Playgroud)

/*我应该在这里做什么来做下面的测试通过*/

        default:
         return state
    }
}
Run Code Online (Sandbox Code Playgroud)

测试验证Redux reducer以不可变的方式交换数组的元素.

深度冻结用于检查初始状态是否以任何方式发生变异.

如何让这个测试通过?

测试/减速器/ index.js

import { expect } from 'chai'
import deepFreeze from'deep-freeze'

const id=1
const destinationIndex=1

 it('move position of layer', () => { …
Run Code Online (Sandbox Code Playgroud)

javascript arrays immutability redux

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

如何编写查询,使用Haskell中的Beam库返回嵌套列表?

我需要重写myQuery的帮助,以便可以检索与购买的课程证相关的所有课程类型。我想要的查询将具有签名:

myQuery :: Text -> Pg [(PurchasedClassPass, [ClassType])]
Run Code Online (Sandbox Code Playgroud)

我使用Beam库具有以下postgres模式:

import           Database.Beam
import           Database.Beam.Migrate
import           Database.Beam.Postgres
import           Data.Text                      ( Text )


data MyDb f = MyDb
  {   _class_types :: f (TableEntity ClassTypeT)
    , _class_pass_types :: f (TableEntity ClassPassTypeT)
    , _class_passes :: f (TableEntity ClassPassT)
    , _purchased_class_passes :: f (TableEntity PurchasedClassPassT)
    } deriving (Generic, Database Postgres)


data ClassTypeT f = ClassType
  { _id :: Columnar f Text
  , _name :: Columnar f Text
  }
  deriving (Generic, Beamable)

instance Table ClassTypeT where
  data …
Run Code Online (Sandbox Code Playgroud)

sql postgresql haskell haskell-beam

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

我应该如何在Redux中测试mapDispatchToProps?

应该如何编写单元测试以确保mapDispatchToProps正确返回包含在调度函数中的动作创建者?

我目前正在使用Mocha和Enzyme进行测试.

这是我的容器组件.

import { Component } from 'react'
import { connect } from 'react-redux'
import Sidebar from '/components/Sidebar'
import Map from '/components/Map'
import * as LayerActions from '../actions/index'

// Use named export for unconnected component (for tests)
export const App = ({layers, actions} ) => (
    <div>
     <Sidebar LayerActions={actions} />
     <Map /> 
    </div>
)

export const mapStateToProps = state => ({
  layers: state.layers
})

export const mapDispatchToProps = dispatch => ({
    actions: bindActionCreators(LayerActions, dispatch)
})

// Use default export …
Run Code Online (Sandbox Code Playgroud)

unit-testing reactjs redux

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

socket.io 是否将消息排队到断开连接的客户端?

如果客户端套接字在多人游戏中途断开连接。在客户端断开连接,socket.io 是否对服务器发出的事件进行排队?

如果是这样,这意味着当客户端套接字重新连接时,它将使用服务器在断开连接时尝试发出的所有事件进行更新。

sockets websocket socket.io

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

Docker 不会将文件更改从主机传播到容器

我的目标是配置 docker,以便当我修改主机上的文件时,更改会传播到容器文件系统内。

您可以将其视为服务器端节点代码的热重载。

nodemon 文件观察程序重新启动服务器以响应文件更改。

然而,当我使用 docker exec pokerspace_express_1 bash 检查容器并检查修改后的文件时,主机卷上的这些文件更改似乎没有反映在容器内部,这些更改不会从主机传播到容器内部。

Dockerfile

FROM node:8

MAINTAINER therewillbecode

# Create app directory
WORKDIR src/app

RUN npm install nodemon -g

# Install app dependencies
COPY package.json .
# For npm@5 or later, copy package-lock.json as well
# COPY package.json package-lock.json ./

RUN npm install


CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: '2'
services:
  express:
   build: .
   depends_on:
    - mongo
   environment:
    - MONGO_URL=mongo:27017/test
    - SERVER_PORT=3000
   volumes:
    - ./:/src/app
   ports:
    - '3000:3000'
   links: …
Run Code Online (Sandbox Code Playgroud)

node.js docker docker-compose

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

"RGB Int Int Int | Transparent"是总和还是产品类型?

总和类型

Maybe Int类型是总和类型.

data Maybe Int = Nothing | Just Int
Run Code Online (Sandbox Code Playgroud)

根据我的理解,这是因为Nothing值构造函数不带参数,而第二个值构造函数Just只接受一个参数.因此,因为没有值构造函数需要多个参数,所以此类型是产品类型.

产品类别

下面的类型是产品类型,因为它的数据构造函数有两个参数,因此是产品类型.

data Colour = Person String Int
Run Code Online (Sandbox Code Playgroud)

但是,我不确定如何在总和和产品类型的上下文中对以下类型进行分类.我们该如何参考?

data Shade = RGB Int Int Int | Transparent
Run Code Online (Sandbox Code Playgroud)

haskell

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