export const deletePost = (key) => ({type: DELETE_POST, key})
switch (action.type) {
case DELETE_POST: {
// action.key = post_id который надо удалить
return {
...state,
posts: state.posts.filter(post => post.key !== action.key)
}
}
}
props.deletePost(айдиПоста)
Мне кажется что это можно реализовать проще:
1) задать в состояние начальное значение
2) создать метод this.setState - при нажатии кнопки выползание слева сайдбара
3) как-то сделать так чтобы при нажатти на крестик в верхнем углу сайдбара- сайдбар снова скрылся (пока не знаю как)
data = [........]
render() {
return (
<>
{ data.map(x => <MyComponent prop1={x.prop1} prop2={x.prop2} />) }
</>
)
}
data = [........]
render() {
const components = []
for(let i = 0; i < data.length; i++) {
const x = data[i]
components.push(<MyComponent prop1={x.prop1} prop2={x.prop2} />)
}
return (
<>
{ components }
</>
)
}
import { render } from "react-dom";
render(<Counter incrementBy={1} />, document.getElementById("root"));
ReactDOM.render(
<h1>Привет, мир!</h1>,
document.getElementById('root')
);
ReactDOM.render(
<MyComponent prop={'PROP'} />,
document.getElementById('app-wrapper')
)
console
.log(
'a'
+ 'b'
)
component={Examlpe}
const shortUrl = this.props.match.params.url // mxkt
const longUrl = await fetch('/api/getlink/' + shortUrl) // mobile/samsung
this.props.history.push('/m/' + longUrl) // localhost/mobile/samsung
как понимаю эти ссылки должны хранится в бд
или нужно подключать другие языки, например php
You need to remove the mode: 'no-cors' setting from your request. That mode: 'no-cors' is exactly the cause of the problem you’re having.
A mode: 'no-cors' request makes the response type opaque. The console-log snippet in the question clearly shows that. And opaque means your frontend JavaScript code can’t see the response body or headers.
fetch('http://....')
.then(res => res.json())
.then(res => {
this.setState({loaded: true, items: res.items})
})
.catch(err => {
console.log('OH SHIT:', err)
this.setState({loadError: true})
})
function App() {
const [current, setCurrent] = React.useState(null)
return (
<div className="App">
<Point disabled={current !== 'Point'} onClick={() => setCurrent('Point')} />
<Line disabled={current !== 'Line'} onClick={() => setCurrent('Line')} />
</div>
);
}
class Line extends Base { // какой еще Base?
render() {
return (
<button disabled={this.props.disabled} onClick={this.props.onClick}>
Линия
</button>
);
}
}
// App
state = { mass: [] }
onFileRead = mass => {
this.setState({ mass: mass })
}
render () {
// console.log(this.state.mass)
return <TextFileReader txt={myTxt} onFileRead={this.onFileRead}/>
}
// TextFileReader
readFile = mass => {
this.props.onFileRead(mass)
// когда будет готов массив, то пусть он прокинется наверх в App
}
this.setState(state => {
const newState = { ...state }
newState.data.text.value.title = 'new title'
return newState
})
GENERATE_SOURCEMAP=false
<WorkItem onClick={() => {alert(1)}} />
class WorkItem extends React.Component {
render() {
return <div onClick = {this.props.onClick}>i am clickable work item</div>
}
}
url = new URL('localhost:3003/calendar?month=2019-08&day=21&time=10:00:00')
params = [...url.searchParams.entries()].reduce((acc, val) => {
acc[val[0]] = val[1];
return acc
}, {})
// {month: "2019-08", day: "21", time: "10:00:00"}