Tags
-tag_id:int
-tag:char/varchar
Cagegories
-category_id:int
-category:char/varchar
Notes:
-note_id:int
-note:text
-created_at:datatime
-updated_at:datetime
-category:FK->Cagegories
Notes_tag:
note:FK->Notes
tag:FK->Tags
select *.n, category.c, from Notes n, Cagegories c
join JSON_ARRAYAGG (запрос к Notes_tag)
order by created_at desc
limit [from] [to]
+1 вариант
const input = useRef(null)
...
function successSubmit() {
input.current.value = ""
}
...
<Input ref={input } />
+2 вариант через state
const [state, setState] = useState({
inputValue: ''
})
...
function successSubmit() {
setState(prevState => {
return {
...prevState,
inputValue: ''
}
})
}
...
<Input
value={state.inputValue}
onInput={e => {
setState(prevState => {
return {
...prevState,
inputValue: e.target.value
}
})
}}/>
+3 Вариант изощренный - "до лучших времен"
function successSubmit() {
document.querySelectorAll('input').forEach(i => i.value = '')
}
const [ text, setText ] = useState('');
const [ swiper, setSwiper ] = useState(null);
useEffect(() => {
if (swiper && text какой там вам нужен) {
swiper.slideNext();
}
}, [ swiper, text ]);
<Swiper
onSwiper={setSwiper}
...
<input
value={text}
onChange={e => setText(e.target.value)}
...
<Parent>
<Child1><a data-title="на старт" /></Child1>
<Child2></*что-то для изменения, например param*/></Child2>
</Parent>
class Parent extends React.Component {
state = {
naStart: false
}
handleClick = (event) => {
if (event.target.dataTitle === "на старт") {
this.setState({naStart: true})
}
}
render() {
return (
<div>
<Child1 onClick={this.handleClick} />
<Child2 param={this.state.naStart} />
</div>
)
}
}
=toMD5(B2)
B2
или где там у вас строка, для которой надо посчитать хеш. И снова куча попутных обновлений.
Например зависать на полминуты при сохранении маленького текстового файла. Как это лечить я не понял