Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 组件不会基于react redux中的状态更改进行渲染_Reactjs_Redux - Fatal编程技术网

Reactjs 组件不会基于react redux中的状态更改进行渲染

Reactjs 组件不会基于react redux中的状态更改进行渲染,reactjs,redux,Reactjs,Redux,当mapStateToProps更新且props在项目组件中不被接受时,项目不会渲染,如果使用CombineReducer,则项目会工作,但如果没有CombineReducer,则项目不会渲染 reducer.js 这是我的reducer,我在其中维护了状态,但在这里它得到更新,但在项目组件中它的呈现状态是更新的 export const initialState={ rows:[], projectformvalue:{ projectname:"",

当mapStateToProps更新且props在项目组件中不被接受时,项目不会渲染,如果使用CombineReducer,则项目会工作,但如果没有CombineReducer,则项目不会渲染

 reducer.js
这是我的reducer,我在其中维护了状态,但在这里它得到更新,但在项目组件中它的呈现状态是更新的

   export const initialState={
    rows:[],
    projectformvalue:{
    projectname:"",
    companyname:"",
    description:"",
    estimationcost:"",
  },
  tabledisplay:false,
  open:true,
}
const reducer=(state=initialState,action)=>{
  const newState={...state};
  if(action.type==='CHANGE'){
     return {...state, projectformvalue:{...state.projectformvalue, [action.payload.name]:action.payload.value}}
  } 
   else if(action.type==='SAVE'){
     let temp = state.rows;
     console.log(state.projectformvalue);
     temp.push(state.projectformvalue);
     return {...state, "rows": temp}
      //newState.rows.push({ ...newState.projectformvalue});
   }
  return newState;
}
export default reducer;

  project.js 

         import React,{Component}from 'react';
         import Actions from './Actions';
         import {connect} from 'react-redux';
        class Project extends Component{



            render(){
               let {rows} = this.props.states;
               console.log(rows);
            return(
                <div className="employeeRegister">
                    <Actions/>
                <table>
                   <thead>
                       <tr>
                       <th>Project Name</th>
                       <th>Company Name</th>
                       <th>Description Name</th>
                       <th>Estimation Cost</th>
                       <th>Actions</th>
                       </tr>
                   </thead>
                   <tbody>
                   {rows.map(tablerows=>{
                       return (
                        <tr key={Math.random()}>
                           <td>{tablerows.projectname}</td>
                           <td>{tablerows.companyname}</td>
                           <td>{tablerows.description}</td>
                           <td>{tablerows.estimationcost}</td>
                           <td>
                               <button onClick={()=>this.props.handleEdit()}>Edit</button>
                           </td>
                       </tr>
                       )
                    })} 
                  </tbody>
               </table>
               </div> 
            )
        }
        }
        const mapStateToProps=(state)=>{
            console.log(state);
            return { states:state.rows }
            }
        export default connect(mapStateToProps)(Project);
export const initialState={
行:[],
projectformvalue:{
项目名称:“”,
公司名称:“,
说明:“,
估计费用:“,
},
tabledisplay:false,
开放:是的,
}
const reducer=(state=initialState,action)=>{
const newState={…state};
if(action.type==='CHANGE'){
返回{…state,projectformvalue:{…state.projectformvalue[action.payload.name]:action.payload.value}
} 
else if(action.type=='SAVE'){
设temp=state.rows;
console.log(state.projectformvalue);
温度推送(状态projectformvalue);
返回{…状态,“行”:temp}
//newState.rows.push({…newState.projectformvalue});
}
返回新闻状态;
}
导出默认减速机;
project.js
从“React”导入React,{Component};
从“/Actions”导入操作;
从'react redux'导入{connect};
类项目扩展组件{
render(){
设{rows}=this.props.states;
console.log(行);
返回(
项目名称
公司名称
描述名称
估算成本
行动
{rows.map(tablerows=>{
返回(
{tablerows.projectname}
{tablerows.companyname}
{tablerows.description}
{tablerows.estimationcost}
this.props.handleEdit()}>Edit
)
})} 
)
}
}
常量mapStateToProps=(状态)=>{
console.log(状态);
返回{states:state.rows}
}
导出默认连接(MapStateTops)(项目);
在这些行中:

let temp = state.rows;
 console.log(state.projectformvalue);
 temp.push(state.projectformvalue);
您意外地改变了
状态。行
(改变状态将阻止
在组件更改时重新渲染组件)。您应该制作一个浅拷贝,如下所示:

let temp = [...state.rows]; // This won't mutate the old state.rows
 console.log(state.projectformvalue);
 temp.push(state.projectformvalue);

状态更新是否正确?@HarishSoni yes state Is Updated日志是否正在渲染?no log not Rendering确保您的
状态
包含名为
的数组,并使用const而不是let in您的渲染:
const{rows}=this.props.states