React.js 中angular 的 $ watch函数等价于什么?
我想监听状态变化并调用像 getSearchResults() 这样的函数。
componentDidMount: function() {
this.getSearchResults();
}
React.js 中angular 的 $ watch函数等价于什么?
我想监听状态变化并调用像 getSearchResults() 这样的函数。
componentDidMount: function() {
this.getSearchResults();
}
当状态改变时将调用以下生命周期方法。您可以使用提供的参数和当前状态来确定是否发生了有意义的更改。
componentWillUpdate(object nextProps, object nextState)
componentDidUpdate(object prevProps, object prevState)
在 2020 年,您可以像这样使用 useEffect 钩子监听状态变化
export function MyComponent(props) {
const [myState, setMystate] = useState('initialState')
useEffect(() => {
console.log(myState, '- Has changed')
},[myState]) // <-- here put the parameter to listen
}
自 2019 年的 React 16.8 使用useState和useEffect Hooks以来,以下现在是等效的(在简单情况下):
AngularJS:
$scope.name = 'misko'
$scope.$watch('name', getSearchResults)
<input ng-model="name" />
react:
const [name, setName] = useState('misko')
useEffect(getSearchResults, [name])
<input value={name} onChange={e => setName(e.target.value)} />
我认为您应该在 Component Lifecycle 下面使用,就好像您有一个输入属性在更新时需要触发您的组件更新那么这是最好的地方,因为它将在渲染之前被调用,您甚至可以更新组件状态反映在视图上。
componentWillReceiveProps: function(nextProps) {
this.setState({
likesIncreasing: nextProps.likeCount > this.props.likeCount
});
}