Reactjs Redux:如何将父道具传递到减速器的初始状态?
好吧,这让我很烦!在react中,我让一个测试组件接收道具以创建其初始状态,如下所示:Reactjs Redux:如何将父道具传递到减速器的初始状态?,reactjs,redux,react-redux,Reactjs,Redux,React Redux,好吧,这让我很烦!在react中,我让一个测试组件接收道具以创建其初始状态,如下所示: constructor(props) { super(props) const {items} = this.props this.state = { items: {...items}, score: 0 } } 传递给它的项(成为状态的一部分)是要测试的项-它在测试这些项时开始删除这些项,直到state.items为空-其中测试完成 尝试在
constructor(props) {
super(props)
const {items} = this.props
this.state = {
items: {...items},
score: 0
}
}
传递给它的项(成为状态的一部分)是要测试的项-它在测试这些项时开始删除这些项,直到state.items为空-其中测试完成
尝试在redux中执行此操作时,我有以下减速器:
import * as types from '../actions/action-types'
import Store from '../Store'
const initialState = {
items: {},// I want items to contain the props passed to this component
score: 0
}
const testWrapperReducer = function(state = initialState, action) {
let newState = null
switch(action.type) {
case types.QUESTION_ANSWERED: {
let {items, score} = state
delete items[action.english]
score += action.isCorrect
newState = {...state, items, score}
break
}
default:
newState = state
}
return newState
}
export default testWrapperReducer
我如何在这里设置initialState,使用其父组件提供给测试组件的道具?还是有更好的方法
干杯 我不会从父亲那里以道具的形式发送物品,相反,我会从父亲那里将物品发送到redux,并使用connect在子系统中接收它们 代码说明: -你在构造器中获得道具, -使用操作将项目发送到redux -作为道具接受它们 -使用道具渲染项目
import React, { PropTypes, Component } from 'react';
import { connect } from 'react-redux';
import * as actions from '../actions';
const Item = (props) => {
<div>{props.item.name}</div>
}
class List extends React.Component {
constructor(props) {
super(props)
this.props.setItems(this.props.items)
}
render() {
return (
<div>
{this.props.items.map((item) => {
return <Item item={item}></Item>
})}
</div>
)
}
}
CreateChat.propTypes = {
items: PropTypes.array,
setItems: PropTypes.func
};
const mapStateToProps = (state) => {
return {
items: state.items
};
};
const mapDispatchToProps = (dispatch) => {
return {
setItems: (items) => dispatch(actions.setItems(items))
};
};
export default connect(
mapStateToProps,
mapDispatchToProps
)(List);
import React,{PropTypes,Component}来自'React';
从'react redux'导入{connect};
将*作为动作从“../actions”导入;
常量项目=(道具)=>{
{props.item.name}
}
类列表扩展了React.Component{
建造师(道具){
超级(道具)
this.props.setItems(this.props.items)
}
render(){
返回(
{this.props.items.map((item)=>{
返回
})}
)
}
}
CreateChat.propTypes={
项目:PropTypes.array,
setItems:PropTypes.func
};
常量mapStateToProps=(状态)=>{
返回{
项目:state.items
};
};
const mapDispatchToProps=(调度)=>{
返回{
setItems:(items)=>dispatch(actions.setItems(items))
};
};
导出默认连接(
MapStateTops,
mapDispatchToProps
)(名单);
您应该使用redux创建golabal存储,而不是将道具传递给组件,您可以调用更新redux存储并使用redux的connect函数将子组件连接到存储的操作通常是另一种方式,将数据加载到redux存储中,然后使用connect
将数据作为道具发送到组件;)如果我使用的是功能组件,因为那里没有可用的构造函数,并且我不能使用useEffect,因为我希望在第一次渲染之前发生,并且只发生一次,那么我该怎么做?