我看到传递给Redux函数的函数mapStateToProps和mapDispatchToProps函数作为第二个参数.connectownProps
[mapStateToProps(state, [ownProps]): stateProps] (Function):
[mapDispatchToProps(dispatch, [ownProps]): dispatchProps] (Object or Function):
Run Code Online (Sandbox Code Playgroud)
什么是可选[ownprops]参数?
我正在寻找另一个例子来说明问题,因为Redux文档中已有一个例子
在文档中的一个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的原因没有意义.
相关的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) 我需要重写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) 应该如何编写单元测试以确保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) 如果客户端套接字在多人游戏中途断开连接。在客户端断开连接后,socket.io 是否对服务器发出的事件进行排队?
如果是这样,这意味着当客户端套接字重新连接时,它将使用服务器在断开连接时尝试发出的所有事件进行更新。
我的目标是配置 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) 的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) redux ×3
haskell ×2
react-redux ×2
arrays ×1
docker ×1
haskell-beam ×1
immutability ×1
javascript ×1
node.js ×1
postgresql ×1
reactjs ×1
socket.io ×1
sockets ×1
sql ×1
unit-testing ×1
websocket ×1