为什么我不能在浏览器中使用 chrome 的控制台触发或模拟用户点击?就像我在页面上有一个链接一样,我$('#app .mylink').click()应该去某个地方。
我正在探索反应,并且看到了这段代码。
const renderLine = (user, key) => <li key={key}><b>{key}</b>: {user[key]}</li>
export default class App extends Component {
...
...
render () {
return (
<div className='App'>
{Object.keys(user).map(key => renderLine(user, key))}
</div>
)
}
}
Run Code Online (Sandbox Code Playgroud)
为什么renderLine在App类之外?这种模式的意图是什么?通常我会放在一个类中并像this.renderLine()
我在某处看到了下面的代码,我很好奇.看起来很干净,但对我来说很不寻常 为什么state = {}声明没有构造函数?
并load声明没有函数关键字?据我所知,有一些方法可以编写函数
function async load() {}
要么
const async load = ()=>{}
什么...args呢?它传播了arguments吗?
import View from './View';
import loadData from './loadData';
export default class extends Component {
state = {};
load = this.load.bind(this);
async load(...args) {
try {
this.setState({ loading: true, error: false });
const data = await loadData(...args);
this.setState({ loading: false, data });
} catch (ex) {
this.setState({ loading: false, error: true });
}
}
render() {
return …Run Code Online (Sandbox Code Playgroud) 我打印我现有的状态,例如console.log(this.state)
{'abc-sorted':false, 'def-sorted': 'asc', 'someotherstuff-sorted': true, show: true}
我想做的是将所有状态都设置为以“ -sorted”状态键结尾的状态,我该怎么办?
我做了这个“丑陋”的事情。
Object.keys(this.state).filter(o=>{
return o.endsWith('sorted')
}).forEach(o2 => {
this.setState({
[o2]: false
})
})
Run Code Online (Sandbox Code Playgroud)
还有其他选择吗?这导致了不必要的渲染。