多个useState 怎么才能一次性 给useState里的变量赋值

来源:5-7 nextjs中的HOC

MaoGirlsQueen

2019-07-26

比如
const [vin,setVin] = useState(’’);
const [vinStar,setVinStar] = useState(’’);
const [duration,setDuration] = useState(’’);
const [analysisType,setAnalysisType] = useState(‘single’);
const [chartType,setChartType] = useState(‘bar’);
const [selectColumns,setSelectColumns] = useState([]);
const [groupByColumns,setGroupByColumns] = useState([]);
const [rightBlock,setRightBlock] = useState([]);
const [dslFilters,setDslFilters] = useState([]);
有多个的时候 从api过来赋值的话
const mySearchInit = (searchId)=>{
dispatch({
type: ‘common/fetchMySearchById’,
payload: { id: searchId },
callback: (response) => {
let newState = JSON.parse(response.condition);
initVlaue(newState,response);
previewChart(newState);
mountInit(newState);
},
});
}
initVlaue 我怎么才能简写才能一次性的赋值 要是state的话 {…this.state}就完事了
const initVlaue = (newState,response)=>{
setAnalysisType(newState.analysisType);
setChargeState(newState.chargeState);
setChartType(newState.chartType);
setDsl(newState.dsl);
setDslFilterCombiner(newState.dslFilterCombiner);
setDslFilters(newState.dslFilters);
setDuration(newState.duration);
setFrom(newState.from);
setGroupByColumns(newState.groupByColumns);
setIndex(newState.index);
setQuickDate(newState.quickDate);
setRightBlock(newState.rightBlock);
setSelectColumns(newState.selectColumns);
setTo(newState.to);
setVin(newState.vin);
setVinFilterVisible(newState.vinFilterVisible);
setVinStar(newState.vinStar);
setMySearch(response);
}

写回答

1回答

Jokcy

2019-07-28

直接一个state,值是对象就行了

0
2
Jokcy
回复
MaoGirlsQueen
对啊,你传一个对象进去就行了
2019-07-30
共2条回复

全栈进阶课程 React16.8+Next.js+Koa2一步到位开发Github

学习React/Next.js服务端渲染SSR同构设计方案,理解OAuth登录体系的实现原理

651 学习 · 311 问题

查看课程