bahman x
4 سال پیش توسط bahman x مطرح شد
1 پاسخ

map در react native

سلام دوستان
دوستان من یک array داخل کد دارم که با map کردن به تعداد آیتم های موجود در آرایه Button ایجاد میکنم.
حالا مشکل من اینجاست که میخوام با کلیک کردن روی یکی از دکمه ها اون دکمه disable بشه.ولی با disable کردن دکمه همه دکمه های disable میشه.
چطور میتونم دکمه ای که فقط کلیک شده رو disable کنم.
یه جا خوندم که باید به تعداد آیتم های آرایه state ایجاد کنم و هر کدوم رو به یک button نسبت بدم(به disabled باتن).ولی خب چیز زیادی ازش متوجه نشدم.
ممنون میشم ترجیحا functional component توضیح بدید.
مچکر

const [disabled, setDisabled] = useState();
    return (
            <View>
                {array.map((item, key) => {
                    return (
                        <View>
                            <Button disabled={disabled} onPress={() => (
                                setDisabled('true'))
                            }/>
                        </View>
                    );
                })}
            </View>
        )

ضمنا کامپوننت Button کامپوننت کاستومایز شده خودمه


ثبت پرسش جدید
bahman x
@bahmanroocket 4 سال پیش آپدیت شد
0

جوابش رو خودم پیدا کردم اینجا مینویسم شاید به درد کسی خورد.
نکتش اینجاست که ما استیت disabled رو نباید به صورت بولین در نظر بگیریم.بلکه key کامپوننت رو برابر اون قرار میدیم و بعدش توی شرط بررسی میکنیم اگه key کامپوننت برابر بود با مقدار disabled اون کامپوننت disable بشه.

const [disabled, setDisabled] = useState();
    return (
        <View>
            {array.map((item, key) => {
                return (
                    <View>
                        <Button disabled={disabled === key} onPress={() => (
                            setDisabled(key))
                        }/>
                    </View>
                );
            })}
        </View>
    )

بررسی شرط تو کد زیر انجام میشه

<Button disabled={disabled === key}

ولی خب با هربار کلیک کردن روی دکمه دیگه مقدار disabled تغییر میکنه و دکمه قبلی فعال و دکمه کلیک شده disable میشه.
برای اینکه هر دکمه ای که کلیک میشه disable بشه و دکمه های قبلی هم disable بمونه احتمالا باید استیت disabled یک ارایه باشه و اگه مقدار key داخل اون بود button مورد نظر disable بشه(بررسی شرط داخل پراپس disabled). ولی خب کد بالا به درد کار من میخورد.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام