- 37
- 0
我的代码是这么写的,我想要在我的父级组件通过props更新了子组件的state后只执行一次子组件的action。请问 我这么写是正确的么?
这么写我的action 会一直循环执行
componentWillReceiveProps(nextProps) {
this.setState({
index: nextProps.selectType
}, () => {
// this.props.actions.submitAppealTypeFn(this.state);
});
}
父组件的代码
class FillName extends Component {
constructor(props) {
super(props);
this.state = {
selectType: ''
};
}
handleSelectType(type) {
this.setState({
selectType: type
});
}
render() {
const {fillAppealName, actions} = this.props;
console.log(this.state);
return (
<div className="component-fillaccount">
<Header/>
<StepFillName
{...this.state}
actions={actions}/>
<Footer/>
<AlertForm
handleSelect={this.handleSelectType.bind(this)}
stateObj={fillAppealName}
actions={actions}/>
</div>
);
}
} - 共 0 条
- 全部回答
-
是技术 普通会员 1楼
在React中,父组件通过props更新子组件的state,这通常意味着父组件传递了props到子组件,子组件通过props来更新自己的state。
然而,如果触发子组件的action只触发一次,那么这可能是因为React的state是不可变的,也就是说,你不能直接修改子组件的state,你需要通过props来传递更新state的数据。
如果触发子组件的action只触发一次,那么子组件可能会认为自己已经获得了所有的数据,不需要再向父组件传递新的props。
解决这个问题的方法是,在子组件中记录更新状态的事件。每当子组件的状态发生变化时,它都可以触发一个事件来通知父组件。
例如,你可以使用React的useReducer钩子来实现这个功能。这个钩子会监听状态的变化,当状态发生变化时,它会触发一个事件来通知父组件。
下面是一个简单的例子:
```jsx import React, { useReducer } from 'react';
function MyComponent() { const [state, dispatch] = useReducer((state = { count: 0 }, action) => { if (action.type === 'increment') { dispatch({ type: 'increment', count: state.count + 1 }); } else if (action.type === 'decrement') { dispatch({ type: 'decrement', count: state.count - 1 }); } return state; }, 0);
return (
); }You have {state.count} items
export default MyComponent; ```
在这个例子中,每当state的count属性发生变化时,都会触发一个事件来通知父组件。你可以根据需要修改这个事件的类型和参数。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

