Mogę się spóźnić na imprezę, ale starałem się zaimplementować dynamiczne odniesienia do mojego projektu we właściwy sposób, a wszystkie odpowiedzi, które znalazłem, dopóki nie wiem, nie są spokojne, satysfakcjonujące w moim guście, więc wymyśliłem rozwiązanie, które moim zdaniem jest prosty i używa natywnego i zalecanego sposobu reagowania, aby utworzyć ref.
czasami okazuje się, że sposób pisania dokumentacji zakłada, że masz znaną liczbę widoków iw większości przypadków ta liczba jest nieznana, więc potrzebujesz sposobu na rozwiązanie problemu w tym przypadku, utwórz dynamiczne odniesienia do nieznanej liczby widoków, których potrzebujesz pokazać w klasie
więc najprostszym rozwiązaniem, jakie mogłem wymyślić i działałem bezbłędnie, było wykonanie następujących czynności
class YourClass extends component {
state={
foo:"bar",
dynamicViews:[],
myData:[] //get some data from the web
}
inputRef = React.createRef()
componentDidMount(){
this.createViews()
}
createViews = ()=>{
const trs=[]
for (let i = 1; i < this.state.myData.lenght; i++) {
let ref =`myrefRow ${i}`
this[ref]= React.createRef()
const row = (
<tr ref={this[ref]}>
<td>
`myRow ${i}`
</td>
</tr>
)
trs.push(row)
}
this.setState({dynamicViews:trs})
}
clickHandler = ()=>{
//const scrollToView = this.inputRef.current.value
//That to select the value of the inputbox bt for demostrate the //example
value=`myrefRow ${30}`
this[value].current.scrollIntoView({ behavior: "smooth", block: "start" });
}
render(){
return(
<div style={{display:"flex", flexDirection:"column"}}>
<Button onClick={this.clickHandler}> Search</Button>
<input ref={this.inputRef}/>
<table>
<tbody>
{this.state.dynamicViews}
<tbody>
<table>
</div>
)
}
}
export default YourClass
w ten sposób przewiń przejdzie do dowolnego wiersza, którego szukasz.
okrzyki i mam nadzieję, że pomoże innym